Question on default value of __init__
Werner Schiendl
ws-news at gmx.at
Mon Nov 19 05:15:49 EST 2001
Hi,
yes, this is the default behaviour of Python.
The default value you provide is stored and passed to every invokation of
the function/method.
This means, the _same_ instance of foo will be passed for every call to
bar.__init__()
To get what you probably want, use None as the default and handle that
special case by creating a new instance explicitely.
This also prevents an instance of foo being created, before you create bar.
hth
Werner
"Bernie" <bernie at pacific.net.hk> wrote in message
news:3BF8D3BC.105F0536 at pacific.net.hk...
> Hello all,
>
> When I run test.py, an instance of foo is created. Is this the default
behavior
> in Python for default value? i.e. The value must be exist as an object.
Are
> there any way to delay the creation of foo() until bar() is created.
>
> Bernie
>
> test.py:
>
> class foo:
> def __init__( self, param=None):
> print 'executed!'
> self.__param = param
>
> def __nonzero( self):
> if self.__param:
> return 1
> else:
> return 0
>
> class bar:
> def __init__( self, param=foo()):
> assert isinstance( param, foo), '"in" must be an instance of
foo'
> pass
More information about the Python-list
mailing list