Для людей, борющихся с циклическим импортом при импорте класса только для проверки Типа: Вы, вероятно, захотите использовать Ссылка вперед (PEP 484 - Подсказки Типа):
, Когда подсказка типа содержит имена, которые еще не были определены, то определение может быть выражено как строковый литерал, чтобы быть разрешенным позже.
Так вместо:
class Tree:
def __init__(self, left: Tree, right: Tree):
self.left = left
self.right = right
Вы делаете:
class Tree:
def __init__(self, left: 'Tree', right: 'Tree'):
self.left = left
self.right = right