Referring to class methods in class attributes
mk
mrkafk at gmail.com
Wed Feb 17 13:38:10 EST 2010
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
More information about the Python-list
mailing list