python аннотации типов для абстрактного значения Enum - PullRequest
1 голос
/ 06 мая 2020

У меня есть перечисление

from enum import Enum

class StrangeEventTypeVariants(Enum):
    crew_training = "Crew training"
    crew_travel = "Crew travel"
    flight = "Flight"
    maintenance = "Maintenance"
    parking = "Parking"

и функция класса, который обрабатывает абстрактное перечисление

class EnumSuggest:
    def __init__(self, enum: Enum):
        self.variants = [{"id": member.name, "name": member.value} for member in enum]

    def get_suggest(self, _):
        return self.variants

, но приведенная выше аннотация неверна, для

suggest = EnumSuggest(StrangeEventTypeVariants)

Я получил следующее предупреждение линтера

Ожидаемый тип Enum, получил Type [StrangeEventTypeVariants]

Как это исправить?

1 Ответ

0 голосов
/ 06 мая 2020

Вы не передаете экземпляр из Enum в EnumSuggest.__init__; вы передаете подкласс из Enum. Подсказка типа должна отражать это.

class EnumSuggest:
    def __init__(self, enum: <b>Type[</b>Enum<b>]</b>):
        self.variants = [{"id": member.name, "name": member.value} for member in enum]

    def get_suggest(self, _):
        return self.variants
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...