Аннотация метода класса 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), поэтому нужно просто указать этот класс.

→ Ссылка