Самая близкая рабочая вещь к вашему коду будет:
==== FILE: b.py ====
class B:
def __init__(self):
print "B"
import a
if __name__ == "__main__":
a = a.A()
==== FILE: a.py ====
import b
class A(b.B): ###=> B is not defined
def __init__(self):
print "A"
Обратите внимание на различия:
Файлы (модули) являются пространствами имен, если вы импортируете «a», вы ссылаетесь на его класс A как «a.A».
Вам необходимо импортировать b в a.py, если вы хотите его использовать.
Вы хотите избежать наличия двух модулей, которые должны включать друг друга, либо помещая все в один и тот же модуль, либо разбивая вещи на несколько модулей. Кроме того, лучше, чтобы весь ваш импорт был в начале файла, что делает невозможным этот тип обезьян.