默认参数值在Python的__init__中无法正常工作?

时间:2013-07-11 07:54:30

标签: python initialization arguments default

假设以下示例:

class Example(object):

    def __init__(self, data=[]):
        self.data = data

如果未给出data参数,则应将实例变量初始化为默认值 - 空列表。但请考虑以下会话:

>>> e = Example()
>>> print(e.data)
[]
>>> e.data.append(1)
>>> print(e.data)
[1]
>>> e = Example()
>>> print(e.data)
[1]

首先,创建Example实例而不指定确切的参数值,因此使用默认值。这是预期的。

然后,修改成员变量,其状态按预期更改。

最后,再次创建Example的新实例,方法与第一种情况相同。然而,成员变量的内容是不同的 - 变量的值以某种方式“幸存”了新实例的创建。为什么?

这是预期的行为吗?我做错了什么?

这个特定的会话是在Python 2.7中完成的,但它在Python 3.3中也是如此。

谢谢,彼得

0 个答案:

没有答案