Как исправить цикличный импорт python?
Ситуация стандартная:
okeos.py
from app import Application
class OkeOS:
is_working: bool = True
taskbar: TaskBar
appfield: AppField
active_apps: list[Application] = []
hidden_apps: list[Application] = []
app.py
from okeos import OkeOS
class Application():
def __init__(self, window: curses.window):
self.stdscr = window
OkeOS.log('Application', ' wea are working')
В двух файлах возникает circular import
Если всё сделать в одном, то что будет выше, не будет видимо тем что ниже.
Но есть необходимость чтобы два класса могли пользоваться методами друг друга
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
Если импортируемый объект используется только в аннотации типа, оберните его импорт в блок if TYPE_CHECKING
, тогда циклический импорт не будет происходить (т.к. при выполнении кода TYPE_CHECKING == False
):
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from app import Application
class OkeOS:
is_working: bool = True
taskbar: TaskBar
appfield: AppField
active_apps: list["Application"] = []
hidden_apps: list["Application"] = []