On Tue, May 11, 2010 at 12:41 PM, Back9 <backgoo...@gmail.com> wrote: > On May 11, 3:20 pm, Chris Rebert <c...@rebertia.com> wrote: >> On Tue, May 11, 2010 at 12:08 PM, Back9 <backgoo...@gmail.com> wrote: >> > On May 11, 3:06 pm, Back9 <backgoo...@gmail.com> wrote: >> <snip> >> >> When i try it, it complains about undefined self. >> >> >> i don't know why. >> >> >> TIA >> >> > Sorry >> > here is the what i meant >> > class test: >> > self._value = 10 >> > def func(self, pos = self._value) >> >> You're still defining the class, so how could there possibly be an >> instance of it to refer to as "self" yet (outside of a method body)? >> Also, just so you know, default argument values are only evaluated >> once, at the time the function/method is defined, so `pos = >> self._value` is never going to work. >> >> Do you mean for self._value to be a class variable (Java lingo: static >> variable), or an instance variable? > > self._value will be instance variable
class Test(object): def __init__(self): self._value = 10 def func(self, pos=None): if pos is None: pos = self._value #do whatever Using None like this is the idiomatic way to have non-constant or mutable default argument values in Python. I recommend you read the part of the Python tutorial on object-oriented programming: http://docs.python.org/tutorial/classes.html Cheers, Chris -- http://blog.rebertia.com -- http://mail.python.org/mailman/listinfo/python-list