У меня много 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» и «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()]
Подробнее здесь: https://stackoverflow.com/questions/781 ... type-hints
Преобразовать строку в перечисление в метаклассе и ввести подсказки ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Почему перечисление всегда находится в том состоянии, в котором перечисление указано первым?
Anonymous » » в форуме C# - 0 Ответы
- 84 Просмотры
-
Последнее сообщение Anonymous
-