Я заметил, что python не позволит вам добавить экземпляр класса к себе как статическому члену при определении класса.статические поля python собственного типа
>>> class Foo:
... A = Foo()
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in Foo
NameError: name 'Foo' is not defined
Однако одно из следующих работ:
>>> class Foo:
... pass
...
>>> class Foo:
... A = Foo()
...
>>> Foo.A
<__main__.Foo instance at 0x100854440>
или
>>> class Foo:
... pass
...
>>> Foo.A = Foo()
>>>
>>> Foo.A
<__main__.Foo instance at 0x105843440>
Я не могу найти поучительные примеры кода или объяснения. Почему python относится к первому случаю по-другому? Где А происходит в каждом из двух последующих случаев?