Аннотация метода класса enum в python
У меня есть класс FigureNames(enum.Enum). Как в аннотации указать, что classmethod возвращает результат FigureNames.name?
class FigureNames(enum.Enum):
rectangle = "Прямоугольник"
parallelogram = "Параллелограмм"
square = "Квадрат"
rhombus = "Ромб"
trapezium1 = "Трапеция равнобедренная"
trapezium2 = "Трапеция прямоугольная"
triangle = "Треугольник"
hexagon = "Шестиугольник"
circle = "Окружность"
prism = "Призма"
cuboid = "Параллелепипед"
cube = "Куб"
pyramid = "Пирамида"
cylinder = "Цилиндр круговой"
cone = "Конус круговой"
sphere = "Шар, сфера"
def __init__(self, *args):
pass
@classmethod
def keyForValue(cls, figure: str) -> "FigureNames": # ??
data = tuple(cls)
for object_ in data:
if object_.value == figure:
return object_
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
У вас и так верно указан тип возвращаемого значения:
@classmethod
def keyForValue(cls, figure: str) -> "FigureNames":
Каждый атрибут в enum имеет тип класса, в котором он объявлен (т.е. например type(FigureNames.rectangle) is FigureNames), поэтому нужно просто указать этот класс.