Constructor re-initialization issue

pythonreptile at gmail.com pythonreptile at gmail.com
Tue Jun 3 18:11:25 EDT 2008


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.



More information about the Python-list mailing list