While executing the class definition which object is referenced by the first argument of the class method, Y r Object attributes not allowed as default arguments
Gabriel Genellina
gagsl-py2 at yahoo.com.ar
Thu Mar 6 20:04:14 EST 2008
En Thu, 06 Mar 2008 22:48:42 -0200, Krishna <Krishna.00.K at gmail.com>
escribi�:
>>>> class Test(object):
> ... def __init__(self):
> ... self.a= 2
> ... def func(self, k = self.a):
> ... print k
> ...
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> File "<stdin>", line 4, in Test
> NameError: name 'self' is not defined
>>>>
>
> In the 'definition of the class', what would the first argument 'self'
> in the methods evaluate to; when we have an object defined, it is
> bound to the object reference, but what happens while the class
> definition is executed, which I believe happens when the module
> containing the class definition is imported
Function default arguments are evaluated when the function is defined
(when the class is defined, in this case) so "self" itself has not a
value. Try this instead:
def func(self, k=None):
if k is None:
k = self.a
print k
If None is an allowed argument, use a special marker instead:
_marker=object()
...
def func(self, k=_marker):
if k is _marker:
k = self.a
...
--
Gabriel Genellina
More information about the Python-list
mailing list