我想在Python中重载getitemEnum方法,以返回元组的第一个元素,而不是整个值内容。为此,我尝试使用重定义的方法在EnumMeta中创建一个枚举,如下所示,然后从中继承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.')
我怎样才能正确地重载该方法
Command.SUCCESS
和SUCCESS.value
都是属性访问,因此__getitem__
从不进入图片如果您希望} and ^{} ?要查看类似的内容,只需使用stdlib
value
是0
(或1
,等等),那么您希望将0, "Exited successsssfully"
分成两部分,可能是^{Enum
,请尝试this one至于子类
EnumMeta
,please read this您不需要新的元类,只需要普通的继承
__getitem__
仅在使用索引语法时调用然后
(当然,从
IndexableEnum
继承的类应该具有事实上可索引的值,并且__getitem__
可以直接在Command
类中定义,如果您不打算使多个类可索引。)有关枚举的文档提供了good example如何在枚举上存储多个常量,并通过属性名访问它们
当被访问时,看起来是这样的:
相关问题 更多 >
编程相关推荐