Python 3枚举与函数值

22 浏览
0 Comments

Python 3枚举与函数值

我注意到Python 3中的Enums(链接)有一个奇怪之处。

如果你将一个Enum的值设置为一个函数,它会阻止该属性被包装为Enum对象,这将阻止你能够使用像EnumCls['AttrName']这样的酷功能动态加载属性。

这是一个bug吗?是故意的吗?

我搜索了一会儿,但没有找到可以在Enum中使用的受限值的提及。

以下是显示这个问题的示例代码:

class Color(Enum):
    Red = lambda: print('In Red')
    Blue = lambda: print('In Blue')
print(Color.Red)    #  - 应该是Color.Red,根据文档
print(Color.Blue)   #  - 应该是Color.Blue,根据文档
print(Color['Red']) # 抛出KeyError - 应该是Color.Red,根据文档

另外,这是我第一次提问,所以如果有什么我应该做得不同的地方,请告诉我!谢谢帮助!

0