可能是重复问题:
Python中的静态类变量
Python面向对象编程和列表
我想知道是否能在这方面得到一些帮助。
我正在使用Python,并且在我正在开发的一个小程序中遇到了一个难以解决的障碍。以下是我的问题(使用一个非常简单且不相关的示例):我有一个类:
class dog:
name = ''
friends = []
我从中制作了几个物品:
fido = dog()
rex = dog()
接下来就是我卡住的地方了。我不知道为什么会出现这种情况,也还没有想到解决办法。我猜测我的某些理解可能不够充分,如果有任何解释,那就太好了。所以这就是我的问题:如果我将一个对象附加到另一个对象上(似乎应该完全没问题),
fido.friends.append(rex)
...事情变得混乱了。就像你在这里看到的一样:
>>> fido.friends.append(rex)
>>> fido.friends
[<__main__.dog instance at 0x0241BAA8>]
>>> rex.friends
[<__main__.dog instance at 0x0241BAA8>]
>>>
那对我来说毫无意义。难道只有fido.friends里面应该有东西吗?即使我创建一个新对象:
rover = dog()
它里面有一个狗实例,我们可以看到这是我们的“rex”对象。
>>> rex.name = "rex"
>>> fido.friends[0].name
'rex'
>>> rex.friends[0].name
'rex'
>>> rover.friends[0].name
'rex'
>>>
这个东西现在一点也不合理,我希望能得到帮助。我已经找了好一阵子尝试寻找解释,但没有找到。如果有我忽略的类似问题,那我很抱歉。