Я был удивлен, узнав, что переменная класса подкласса не может получить доступ к переменной класса родителя, не указав конкретно имя класса родителя:
>>> class A(object):
... x = 0
...
>>> class B(A):
... y = x+1
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in B
NameError: name 'x' is not defined
>>> class B(A):
... y = A.x + 1
...
>>> B.x
0
>>> B.y
1
Почему при определении By I должны ссылаться на топор, а не только х? Это противоречит моей интуиции из переменных экземпляра, и поскольку я могу ссылаться на Bx после того, как определен B.