【发布时间】:2011-03-03 23:32:42
【问题描述】:
有人可以解释为什么 Python 会执行以下操作吗?
>>> class Foo(object):
... bar = []
...
>>> a = Foo()
>>> b = Foo()
>>> a.bar.append(1)
>>> b.bar
[1]
>>> a.bar = 1
>>> a.bar
1
>>> b.bar
[1]
>>> a.bar = []
>>> a.bar
[]
>>> b.bar
[1]
>>> del a.bar
>>> a.bar
[1]
这很混乱!
【问题讨论】:
-
真的吗?很容易看出,如果有人花时间使用几乎任何其他 OOP 语言,他们会如何期望
bar成为本地实例变量。 -
@Oli:没时间上 Python 教程?
-
@SilentGhost:如果我们开始挑选人们提出可以通过阅读文档来回答的问题,那么甚至不会有 SO。
-
@danben:教程没有简单回答的许多 SO 问题。然而,遗憾的是,我们必须通过提供教程链接来回答问题。如果他们先阅读本教程,那将会更有趣。
-
@digitala:你用的是哪个教程?请提供名称或链接。