【发布时间】:2020-03-09 16:54:10
【问题描述】:
我想重载 Python 中的 getitem 枚举方法以返回元组的第一个元素而不是整个值内容。为此,我尝试使用重新定义的方法创建一个基于 EnumMeta 的 Enum,如下所示,然后继承自它的 Enum final 类,如下所示:
from enum import Enum
from enum import EnumMeta
from datetime import date
class CommandMeta (EnumMeta):
SUCCESS = 0, "Exited successsssfully."
def __getitem__(cls, value, *args, **kwargs):
value = value[0]
return super().__getitem__(value, *args, **kwargs)
class Command (Enum, metaclass=CommandMeta):
SUCCESS = 0, "Exited successsssfully."
预期的输出是:
print(Command.SUCCESS.value)
0
相反,它仍然是一样的:
print(Command.SUCCESS.value)
(0, 'Exited successsssfully.')
我怎样才能正确地重载方法?
【问题讨论】:
-
你被误导了,阅读object.__getitem__
-
感谢您的回答,我认为我应该做的是让 value=cls[value]?