Question on default value of __init__
ws-news at gmx.at
Mon Nov 19 11:15:49 CET 2001
yes, this is the default behaviour of Python.
The default value you provide is stored and passed to every invokation of
This means, the _same_ instance of foo will be passed for every call to
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.
"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
> in Python for default value? i.e. The value must be exist as an object.
> there any way to delay the creation of foo() until bar() is created.
> class foo:
> def __init__( self, param=None):
> print 'executed!'
> self.__param = param
> def __nonzero( self):
> if self.__param:
> return 1
> return 0
> class bar:
> def __init__( self, param=foo()):
> assert isinstance( param, foo), '"in" must be an instance of
More information about the Python-list