default argument
Chris Rebert
clp2 at rebertia.com
Tue May 11 15:52:43 EDT 2010
On Tue, May 11, 2010 at 12:41 PM, Back9 <backgoodoo at gmail.com> wrote:
> On May 11, 3:20 pm, Chris Rebert <c... at rebertia.com> wrote:
>> On Tue, May 11, 2010 at 12:08 PM, Back9 <backgoo... at gmail.com> wrote:
>> > On May 11, 3:06 pm, Back9 <backgoo... at 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
More information about the Python-list
mailing list