Constructor re-initialization issue

George Sakkis george.sakkis at gmail.com
Tue Jun 3 18:59:38 EDT 2008


On Jun 3, 6:11 pm, pythonrept... at gmail.com wrote:

> Hello all,
>
> I have come across this issue in Python and I cannot quite understand
> what is going on.
>
> class Param():
>     def __init__(self, data={}, condition=False):
>         if condition:
>             data['class']="Advanced"
>         print data
>
> In the previous example, I expect the variable data to be re-
> initialized every time I construct an object type Param. However, when
> I do the following:
>
> Param(condition=True)
> Param(condition=False)
>
> The second call still prints {'class': 'Advanced'}
>
> Shouldn't data be initialized to {} since it is the default in
> __init__? Why would the state of data be preserved between two
> independent instantiations?
>
> Any help would be greatly appreciated.
>
> M.

This must be by far the most FAQ.. unfortunately it seems it will
remain for 3.x as well: http://www.python.org/doc/faq/general/#why-are-default-values-shared-between-objects



More information about the Python-list mailing list