LINUX.ORG.RU

История изменений

Исправление Aswed, (текущая версия) :

Лол, так у тебя не в типах проблема, а в циклических зависимостях. Нельзя делать в m1 import m2, а потом сразу же в m2 делать import m1. Сделай в m2 что-то типа такого:

@lru_cache(maxsize=1)
def required_classes() -> Dict[type, Callable]:
    from m1 import A, B
    from ... import ... # прочие импорты
    return {A: method2, B: method1, ...}

def data_save(obj: Any) -> None:
    methods = required_classes()
    for cls, method in methods.items():
        if isinstance(obj, cls):
            return method(obj)

Исходная версия Aswed, :

Лол, так у тебя не в типах проблема, а в циклических зависимостях. Нельзя делать в m1 import m2, а потом сразу же в m2 делать import m1. Сделай в m2 что-то типа такого:

@lru_cache(maxsize=1)
def required_classes() -> Dict[type, Callable]:
    from m1 import A, B
    from ... import ... # прочие импорты
    return {A: method2, B: method1, ...}

def data_save(obj) -> None:
    methods = required_classes()
    for cls, method in methods.items():
        if isinstance(obj, cls):
            return method(obj)