Разрешение циклического импорта подсказок типа Python

У меня есть классы Python, которые имеют экземпляры друг друга в качестве свойств

class A:
    def __init__(self, b: B) -> None:
        self.b = a

class B:
    def __init__(self, a: A) -> None:
        self.a = a

Это прекрасно работает, если эти классы определены в одном и том же файле, но в моем случае они оба довольно большие, и я хотел бы переместить их в отдельные файлы. Однако, если я сделаю это, мне придется импортировать B в a.py и A в b.py, что вызовет круговую ошибку импорта. Кто-нибудь знает шаблон, который я могу использовать, чтобы иметь A и B в отдельных файлах, поддерживать подсказку типа и столкнуться с циклической ошибкой импорта?


person mdornfe1    schedule 23.12.2019    source источник


Ответы (1)


Да. Python игнорирует подсказки типа в кавычках:

class A:
    def __init__(self, b: 'B') -> None:
        self.b = a
class B:
    def __init__(self, a: 'A') -> None:
        self.a = a
person Anonymous    schedule 23.12.2019