25-08-2009 o 22:16:24 Stephen Hansen <apt.shan...@gmail.com> wrote:

The OP's probably is that during the execution of the class body, the class
doesn't exist... so the 'def fact' -can't- use Classname.fact to address
itself explicitly, and within fact the locals don't contain a reference to the function itself, and its globals don't either. You just can't do that. The right way, IMHO, is to move 'fact' up and out of the class into a _fact global variable. Alternatively, you can use a metaclass.

Note that you can also pass a function to the function itself, and then
it works:

class Foo:
...     def func(foo=None):
...         if foo:
...             return foo()
...         else:
...             return '2nd step'
...     x = func(func)
...
Foo.x
'2nd step'

Note that when called from class definition body, func is an ordinary
function, not a method. It become a method *when it's called as a method*
(what is possible *after* creating the class => outside the definition).

Cheers,
*j

--
Jan Kaliszewski (zuo) <z...@chopin.edu.pl>
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to