Referring to class methods in class attributes
Stephen Hansen
apt.shansen at gmail.com
Wed Feb 17 12:59:11 EST 2010
On Wed, Feb 17, 2010 at 9:38 AM, mk <mrkafk at gmail.com> wrote:
> It works. But if I'd like to def print_internal_date in PYFileInfo body
> like so:
>
> class PYFileInfo(FileInfo):
> 'python file properties'
>
> def print_internal_date(self, filename):
> f = open(filename + 'c', "rb")
> data = f.read(8)
> mtime = struct.unpack("<i", data[4:])
> return time.asctime(time.gmtime(mtime[0]))
>
> tagdata = {'compiled_fname': lambda x: x + 'c',
> 'size': os.path.getsize,
> 'internal_date': PYFileInfo.print_internal_date
> }
>
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.
--S
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20100217/c342ae6c/attachment-0001.html>
More information about the Python-list
mailing list