Stephen Hansen wrote:

You don't have to (and can't) refer to the class within the body. Class statements are sort of... odd. They are code which is directly executed, and the results are then passed into a metaclass/type/whatever and a class object is created. While within the class body, the class doesn't exist yet.

But you don't need it to.

Just do:

   'internal_date': print_internal_date

The 'def' is in the same local scope as 'tagdata' is.

Thanks, that worked. But in order to make it work I had to get rid of 'self' in print_internal_date signature, bc all other functions in tagdata have only a single argument:

class PYFileInfo(FileInfo):
    'python file properties'

    def print_internal_date(filename):
...

    tagdata = {'compiled_fname': lambda x: x + 'c',
                'size': os.path.getsize,
                'internal_date': print_internal_date
            }

That looks weird: a method with no 'self'. Hmm that is probably seriously wrong.

This obviously means no other method can call it like self.print_internal_date(), because self would get passed as first argument, yes?

I checked that print_internal_date can be called on an instance, so the same method can be seen as:

- class method -- when used in local scope definition like tagdata, or
- instance method -- when called from an instance or from self?

It should be called ______print_internal_date really. ;-)

I wonder if I'm not trying to make Python things it shouldn't be doing, but it's the problem at hand that is leading me into this conundrum: all other functions for tagdata use single arguments. I should probably code around that anyway..

Regards,
mk



--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to