将字符串转换为元类中的枚举和类型提示

问题描述 投票:0回答:0

我有很多 Enum 和 EnumMeta 之类的

class MyEnumMeta(EnumMeta):
    def from_string(cls, s: str) -> Enum:
        return cls[s.upper()]

class A(IntEnum, metaclass=MyEnumMeta):
    ONE = 1
    TWO = 2
    ...

class B(Enum, metaclass=MyEnumMeta):
    BB = auto()
    ...

...

如果我进行以下比较,

A.from_string('TWO') > A.ONE

我收到以下 mypy 消息: < ("A" and "Enum")

不支持的操作数类型

如何解决类型不兼容的问题?我不想在每个类中定义 from_string 方法并指定相应的类作为返回值。

我在每个类中定义了方法,并指定相应的类作为返回值。

class A(IntEnum):
    ONE = 1
    TWO = 2
    ...

    @classmethod
    def from_string(cls, s: str) -> 'A':
        return cls[s.upper()]

class B(Enum):
    BB = auto()

    @classmethod
    def from_string(cls, s: str) -> 'B':
        return cls[s.upper()]
python mypy python-typing
© www.soinside.com 2019 - 2024. All rights reserved.