我在Python的继承中遇到了一个问题,我知道如何避免这个问题,但并不完全理解。这个问题发生在我制作菜单时,但我已经将代码简化为只有真正的问题。
class menu:
buttonlist=[]
>>> class av(menu):
def __init__(self, num):
self.buttonlist.append(num)
print self.buttonlist
>>> AV=av(12)
[12]
>>> class main(menu):
def __init__(self, num):
self.buttonlist.append(num)
print self.buttonlist
>>> Main=main(14)
[12, 14]
>>> AV.buttonlist
[12, 14]
我希望通过'Main=main(14)'获得[14],通过'AV.buttonlist'获得[12],但是似乎"append"将列表附加到了所有类和对象中:S 有人能解释一下这是为什么吗? 提前感谢!
AV.__init__
中使用super(AV, self).__init__()
代替Menu.__init__(self)
,并在Main.__init__
中进行相应的更改(因为没有括号的print
,所以我推断这是Python 2.x)。 - tzot