В Python переменные класса могут быть доступны через этот экземпляр класса:
>>> class A(object):
... x = 4
...
>>> a = A()
>>> a.x
4
Легко показать, что a.x действительно разрешено a.x, а не копируется в экземпляр во время построения:
>>> A.x = 5
>>> a.x
5
Несмотря на то, что это поведение хорошо известно и широко используется, я не смог найти окончательную документацию, охватывающую его. Наиболее близким, которое я мог найти в документах Python, был раздел в классах:
class MyClass: """A simple example class""" i = 12345 def f(self): return 'hello world'[надрез]
... По определению все атрибуты класса, которые являются объектами-объектами, определяют соответствующие методы его экземпляров. Поэтому в нашем примере
x.fявляется допустимым методом, так какMyClass.fявляется функцией, ноx.iне является, так какMyClass.iне является....
Однако в этой части речь идет конкретно о методах, поэтому она, вероятно, не относится к общему случаю.
Мой вопрос в том, что это документировано? Могу ли я полагаться на это поведение?