如何在Python 3中创建类的新实例?

时间:2013-08-11 13:31:30

标签: list class oop python-3.x append

我在python中遇到了这种奇怪的行为。我想创建类Numbers的两个不同实例:

class Numbers:
   numberList=[]

   def __init__(self, *arg):
      for number in arg:
         self.numberList.append(number)


numbers=Numbers(4, 8)    # Instance 1
numbers=Numbers(7, 5, 3) # Instance 2
print(numbers.numberList)

输出:

[4, 8, 7, 5, 3]

预期产出:

[7, 5, 3]

我认为我进行类实例化的代码部分与使用其他语言中的关键字New相同。然而,结果完全不同。这是为什么?我希望instance 1instance 2完全替换,而不是连接两者。

1 个答案:

答案 0 :(得分:2)

在以下代码中,numberList是所有类实例共享的类变量。

>>> class Numbers:
...     numberList = []
... 
>>> n1 = Numbers()
>>> n2 = Numbers()
>>> Numbers.numberList is n1.numberList
True
>>> Numbers.numberList is n2.numberList
True

按以下方式更改以获取每个实例的实例变量(在Python中称为数据属性):

class Numbers:
    def __init__(self, *arg):
        self.numberList = []
        for number in arg:
            self.numberList.append(number)