当枚举成员不存在时返回默认会员
我有一个枚举,我希望当成员内部不存在默认会员。例如:
class MyEnum(enum.Enum):
A = 12
B = 24
CUSTOM = 1
print(MyEnum.UNKNOWN) # Should print MyEnum.CUSTOM
我知道我可以使用类似的元素:
class MyMeta(enum.EnumMeta):
def __getitem__(cls, name):
try:
return super().__getitem__(name)
except KeyError as error:
return cls.CUSTOM
class MyEnum(enum.Enum,metaclass=MyMeta):
...
但是,只有在使用myenum ['unknown']
访问枚举时,这似乎是有效的。有没有办法涵盖在不存在成员时访问枚举成员的两种方法?
I have an Enum where I would like a default member to be returned when a member does not exist inside of it. For example:
class MyEnum(enum.Enum):
A = 12
B = 24
CUSTOM = 1
print(MyEnum.UNKNOWN) # Should print MyEnum.CUSTOM
I know I can use a metaclass like so:
class MyMeta(enum.EnumMeta):
def __getitem__(cls, name):
try:
return super().__getitem__(name)
except KeyError as error:
return cls.CUSTOM
class MyEnum(enum.Enum,metaclass=MyMeta):
...
But that appears to only work if I access the Enum using MyEnum['UNKNOWN']
. Is there a way that covers both methods of accessing members of an enum when the member doesn't exist?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
将
__ getAttr __
的定义添加到Metaclass:然后,您的代码将输出:
Add a definition for
__getattr__
to the metaclass:Then, your code will output:
编译 @brokentbenchmark 的答案和这个答案,以及一些知识,让我们使默认枚举成员一个参数:
输出:
Compiling the answer of @BrokenBenchmark, and this answer, and a bit of knowledge, let's make default enum member a parameter:
Output: