【问题标题】:Python creating new object of class contains values of older object [duplicate]Python创建类的新对象包含旧对象的值[重复]
【发布时间】:2015-08-02 17:31:14
【问题描述】:

我有一个带有列表变量的类和一个将项目附加到此列表的函数。我不能直接附加项目,因为我必须验证它们:

class Foo:
    def __init__(self, elements=[]):
        self.elements = elements

    def append(self, element):
        self.elements.append(element)

如果我实例化这个类的一个对象,添加项目然后创建另一个新对象,这个对象包含第一个对象的项目。

foo = Foo()
print foo.elements  # []
foo.append(element=4)
print foo.elements  # [4]
foo.append(element=7)
print foo.elements  # [4, 7]
bar = Foo()
print bar.elements  # [4, 7]

谁能解释一下,为什么会这样?

对我来说可能的解决方案可能是这样,但我不喜欢它......

class Foo:
    def __init__(self, elements=None):
        if elements is None:
            self.elements = []
        else:
            self.elements = elements

    def append(self, element):
        self.elements.append(element)

感谢所有回答!

【问题讨论】:

标签: python arrays list python-2.7 oop


【解决方案1】:

您自己已经得到了答案。使用可变对象进行初始化绝不是一个好主意。 一旦类被定义并为每个实例重用,它将被初始化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 2011-10-22
    • 1970-01-01
    相关资源
    最近更新 更多