Question on default value of __init__

Werner Schiendl ws-news 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
the function/method.
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> wrote in message
news:3BF8D3BC.105F0536 at
> Hello all,
> When I run, 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.
> Bernie
>     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
>             pass

More information about the Python-list mailing list