Я хочу сохранить псевдонимы типов в одном модуле, скажем my_types
, чтобы иметь возможность использовать их где угодно в моем приложении (аналогично стандартному модулю typing
). Но mypy жалуется, что прямая ссылка на класс X
не определена. Если я определю класс X
позже в том же модуле, это нормально, но если он определен в другом, mypy расстроится.
Итак, мой вопрос: как мне сохранить все мои псевдонимы типов в одном модуле, чтобы mypy не вызывал ошибку о прямых ссылках, которые не определены в том же модуле? Или это как-то неправильно?
Вот мой пример кода:
from my_types import SomeXs
class X:
pass
Псевдонимы типов определяются так:
# my_types.py
from typing import List
SomeXs = List['X']
Когда я запускаю mypy, я получаю сообщение об ошибке X
не определено:
$ mypy module.py
my_types.py:4: error: Name 'X' is not defined
Found 1 error in 1 file (checked 1 source file)
SomeXs = List[X]
- person Hirusha Fernando   schedule 11.12.2020X
не входит вmy_types
(через определение или импорт), тоX
,'X'
и любые другие подобные варианты не могут ссылаться на него. Это не имеет ничего общего с форвардными объявлениями, которые обращаются к более поздним привязкам в той же области. Как вы ожидаете, что MyPy узнает, чтоX
означаетmodule.X
, а не какой-то другойX
? Возможно, вы ищетеTypeVar
? - person MisterMiyagi   schedule 11.12.2020X
. - person fqxp   schedule 11.12.2020