小编joc*_*.bt的帖子

问题扩展枚举并重新定义__getitem__

我在重新定义__getitem__自定义子类时遇到了一些麻烦Enum.我__getitem__没被打电话.我想它与Enum元类有关,但我不确定是什么和为什么.

最小的工作示例(Python 3.4):

from enum import Enum, unique

@unique
class Test(Enum):
    a = "a"
    b = "b"

    def __getitem__(self, name):
        try:
            return super().__getitem__(name)
        except (TypeError, KeyError) as error:
            print("TEST")

if __name__ == "__main__":
    Test["a"]
    Test["c"]
Run Code Online (Sandbox Code Playgroud)

结果:

$ python test.py
Traceback (most recent call last):
  File "test.py", line 18, in <module>
    Test["c"]
  File "C:\Development\Python\Python34\lib\enum.py", line 258, in __getitem__
    return cls._member_map_[name]
KeyError: 'c'
Run Code Online (Sandbox Code Playgroud)

enums python-3.x

8
推荐指数
2
解决办法
1005
查看次数

标签 统计

enums ×1

python-3.x ×1