我有一个 Python 类,它的类属性设置为None
. 创建新实例时,对该属性所做的更改会在所有实例中持续存在。
这里有一些代码可以理解这一点:
class Foo(object):
a = []
b = 2
foo = Foo()
foo.a.append('item')
foo.b = 5
正如人们所期望的那样,使用foo.a
returns['item']
和foo.b
returns 。5
当我创建一个新实例(我们将调用它bar
)时,也使用bar.a
return['item']
和bar.b
return 5
!但是,当我最初将所有类属性设置为None
然后将它们设置为 in 时__init__
,如下所示:
class Foo(object):
a = None
b = None
def __init__(self):
self.a = []
self.b = 2
在返回和返回时使用bar.a
返回和返回。[]
bar.b
2
foo.a
['item']
foo.b
5
这是它应该如何工作的吗?在我编写 Python 的 3 年里,我显然从未遇到过这个问题,希望得到一些澄清。我在文档中的任何地方也找不到它,所以如果可能的话,给我一个参考会很棒。:)