python 抽象枚举值的类型注释

python type annotations for abstract Enum value

我有一个枚举

from enum import Enum

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

和函数 class 处理抽象枚举

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)

我收到下一个 linter 警告

Expected type Enum, got Type[StrangeEventTypeVariants]

如何解决?

您没有将 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