Мне нужно указать определенный набор значений в качестве ожидаемого типа возвращаемого значения моей функции. Допустим, определен некоторый класс под названием Scene, у которого есть имя атрибута, которое должно быть строкой, которая может заканчиваться только на "1K", "2K" или " 4К". Теперь я хочу написать функцию, которая принимает этот класс в качестве аргумента и возвращает последние два символа его имени в виде строки. Есть ли способ указать тип возвращаемого значения этой функции как набор точных строковых значений, используя
встроенные модули в Python 3.7.7? Примерно так:
Код: Выделить всё
def scene_resolution(sc : Scene): -> any value in {'1K', '2K', '4K'}: # return type?
res = sc.name[-2:]
assert res in {'1K', '2K', '4K'}
return res
Я знаю об использовании Literal из typing_extensions, но, к сожалению, он работает только с Python 3.8 и выше, а API программного обеспечения, с которым я имею дело, использует Python 3.7.7. Я также пытался что-то сделать с помощью enum.Enum, но не смог заставить его работать должным образом.
У вас есть предложения?
UPD. Единственный способ, который я нашел до сих пор, — это определить некоторую функцию, которая возвращает нужный мне набор, и использовать ее имя в качестве ожидаемого типа возвращаемого значения. Не уверен, что это правильный путь и хорошая практика, но, по крайней мере, это работает.
Подробнее здесь:
https://stackoverflow.com/questions/679 ... -in-python