【发布时间】:2019-11-23 05:21:03
【问题描述】:
我正在尝试将一些代码从 python 2 翻译成 python 3,但遇到了问题:
from enum import Enum, EnumMeta
class KeyCode(Enum):
A = 1
B = 2
C = 3
class KeyMeta(EnumMeta):
def __new__(mcs, name, bases, dct):
dct.update({e.name: e.value for e in KeyCode})
return super(KeyMeta, mcs).__new__(mcs, name, bases, dct)
class Key(Enum, metaclass=KeyMeta):
pass
print(repr(Key.A))
问题是python2的Key.A是enum < Key.A: 1>,而python3是< class 'int'>。
【问题讨论】:
-
你想要完成什么?在几个不同的
Enums 中有相同的名称集? This answer 可以提供帮助。另外,请参阅 When should I subclass EnumMeta instead of Enum 以获得一些好的一般建议。