Как я могу динамически проверять, соответствует ли значение типу Python Literal?Python

Программы на Python
Ответить
Anonymous
 Как я могу динамически проверять, соответствует ли значение типу Python Literal?

Сообщение Anonymous »

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

Код: Выделить всё

from typing import Literal

PossibleValues = Literal["a", "b"]

x = input()
Я хотел бы использовать isinstance, но при этом возникает ошибка типа:

Код: Выделить всё

>>> isinstance(x, PossibleValues)
Traceback (most recent call last):
File "", line 1, in 
File "/.../typing.py", line 720, in __instancecheck__
return self.__subclasscheck__(type(obj))
File "/.../typing.py", line 723, in __subclasscheck__
raise TypeError("Subscripted generics cannot be used with"
TypeError: Subscripted generics cannot be used with class and instance checks
Я обнаружил, что можно использовать get_args, но этот подход кажется немного хакерским.

Код: Выделить всё

>>> from typing import get_args
>>> x = input()
'c'
>>> x in get_args(PossibleValues)
False
Есть ли лучший способ?

Подробнее здесь: https://stackoverflow.com/questions/726 ... teral-type
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»