Constructor re-initialization issue

pythonreptile at gmail.com pythonreptile at gmail.com
Tue Jun 3 19:33:20 EDT 2008


On Jun 3, 12:59 pm, George Sakkis <george.sak... at gmail.com> wrote:
> 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-...
Thanks for clearing this up for me.

M.




More information about the Python-list mailing list