Как исправить цикличный импорт 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"] = []
→ Ссылка