在 Python 中,可以通过该类实例访问类变量:
>>> class A(object):
... x = 4
...
>>> a = A()
>>> a.x
4
很容易证明a.x
确实是解析为A.x
,而不是在构造过程中复制到实例:
>>> A.x = 5
>>> a.x
5
尽管这种行为众所周知并被广泛使用,但我找不到任何涵盖它的权威文档。我在 Python 文档中能找到的最接近的部分是关于 classes的部分:
class MyClass: """A simple example class""" i = 12345 def f(self): return 'hello world'
[剪辑]
...根据定义,作为函数对象的类的所有属性都定义了其实例的相应方法。所以在我们的例子中,
x.f
is 是一个有效的方法引用,sinceMyClass.f
是一个函数,但x.i
不是,sinceMyClass.i
不是。...
但是,这部分专门讨论了方法,因此它可能与一般情况无关。
我的问题是,这有记录吗?我可以依靠这种行为吗?