可能重复: Python Python OOP 和列表
中的静态类变量
只是想知道我是否可以得到一些帮助。
我正在使用 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()
它有一个 dog 实例,我们可以看到它是我们的“rex”对象。
>>> rex.name = "rex"
>>> fido.friends[0].name
'rex'
>>> rex.friends[0].name
'rex'
>>> rover.friends[0].name
'rex'
>>>
这只是没有意义,我希望得到一些帮助。我搜索了一段时间试图找到一个解释,但没有。抱歉,如果我错过了类似的问题。