Python типизация: Как указать псевдонимы типов для сторонних типов? - PullRequest
1 голос
/ 28 мая 2020

Я все еще наполовину новичок в типе python и столкнулся с проблемой.

В моем проекте у меня есть функции, которые передают или возвращают очень вложенные типы.

Сегодня я обнаружил, что вы можете назначить псевдонимы, набрав python. Я сделал это, но, к сожалению, mypy показал мне много ошибок.

Проблема в том, что тип, которому я хотел присвоить псевдоним, содержит тип, не входящий в стандартный пакет набора.

На данный момент я использую https://github.com/ramonhagenaars/nptyping для ввода моих numpy массивов.

Один из типов, которым я хотел присвоить псевдоним, следующий:

 List[List[Tuple[NDArray[(Any,), int], NDArray[(Any,), int]]]]

mypy интерпретирует тип NDArray как «Любой», и поэтому я не мог дать этому типу псевдоним. Если я назначил этот тип псевдониму и набрал с ним функции, я получил сообщение об ошибке:

result_comparator.py:22: error: Invalid type alias: expression is not a valid type
result_comparator.py:22: error: Value of type "Type[List[Any]]" is not indexable

Когда я заменил типы массивов numpy на такие типы, как int или str, псевдонимы сработали.

Я знаю, что это очень вложенный тип, и я пытаюсь реструктурировать тип и функцию. Так или иначе, я бы хотел сделать код более читабельным, используя псевдонимы.

Есть ли способ присвоить псевдоним и такому типу? Большое спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...