Ответ 1
В Python все динамическое - даже декларации классов. Нет ничего, что могло бы помешать вам изменить содержимое класса после первоначального объявления:
class A:
pass
class B:
a = A()
A.b = B()
NB: Если вы не знакомы с Python, ключевое слово pass
просто позволяет вам сказать "ничего здесь" - это не важно, если класс A не пуст, как в этом примере!