By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,965 Members | 1,690 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,965 IT Pros & Developers. It's quick & easy.

Constructor re-initialization issue

P: n/a
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.
Jun 27 '08 #1
Share this Question
Share on Google+
3 Replies


P: n/a
On Jun 3, 6:11 pm, pythonrept...@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 is a Frequently Asked Question (FAQ):
http://www.python.org/doc/faq/genera...etween-objects
Jun 27 '08 #2

P: n/a
On Jun 3, 6:11 pm, pythonrept...@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/genera...etween-objects
Jun 27 '08 #3

P: n/a
On Jun 3, 12:59 pm, George Sakkis <george.sak...@gmail.comwrote:
On Jun 3, 6:11 pm, pythonrept...@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/genera...values-shared-...
Thanks for clearing this up for me.

M.

Jun 27 '08 #4

This discussion thread is closed

Replies have been disabled for this discussion.