Задайте тип переменной, чтобы он совпадал с содержимым набора - PullRequest
0 голосов
/ 17 апреля 2019

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

Я искал вокругНекоторое время, и я не могу найти способ ссылаться на исходный набор так, чтобы он определял тип новой переменной.Я мог бы сделать что-то вроде следующего, где я просто использую ту же ссылку на тип, что и в объявлении набора ...

my_set: Set[str] = {"a","b"}
def my_func(in_val:str):
   ...

, но это не было бы идеально.

В идеале я мог бысделать что-то вроде следующего ...

scratch1.py

import typing

my_set: typing.Set[str] = {"a","b","c"}

def my_func(in_val: TypeElement[my_set]):  # Or something like this
    print(in_val)

my_func("a")  # No error when running mypy
my_func(1)  # Error when running mypy
my_func("d")  # Possibly error, if possible, when running mypy

запустить в терминале

$ mypy scratch1.py
scratch1.py:9: error: Argument 1 to "my_func" has incompatible type "int"; expected "str"
...