Я не могу понять, как работает инициализация класса Python, если в одном случае я использую константы, такие как int, и, в другом случае, некоторые выражения, такие как dict comp понимание,
Оба случая связаны с использованием ранее объявленного класса(статические) переменные.
См. фрагмент кода, описывающий проблему:
class Working(object):
A = 5
B = A
# everything is initialized just as expected
class NotWorking(object):
A = {
'key': 'value',
}
print(f'Print A: {A}') # {'key': 'value'}
B = {
k: A[k] for k in A.keys()
}
# Throws "NameError: name 'A' is not defined."
Почему два класса ведут себя по-разному?