假设不是项目,而是NewBreakfast
样式的枚举,而不是OldBreakfast
样式的枚举。
from enum import Enum
class OldBreakfast:
HAM = 0x00
EGGS = 0x01
PANCAKES = 0x02
class NewBreakfast(Enum):
HAM = 0x00
EGGS = 0x01
PANCAKES = 0x02
def eat():
food1 = OldBreakfast.HAM
food2 = NewBreakfast.HAM
print(food1)
print(food2)
eat()
从以上代码的eat()
中我们可以看到,从“旧”到“新”的一个好处是,单步执行或在这里打印时,人们可以看到正在吃什么,而不是必须回到代码并反向映射代码。
令人愉快的是,将枚举更新为新样式涉及非常有限的操作。特别是,仅定义本身是必要的。其他一切都将通过魔法起作用。
最后一条陈述确实准确吗?有没有需要当心的陷阱?
答案 0 :(得分:1)
在替换旧代码时,您可能需要使用IntEnum
(或StrEnum
或...)。例如:
>>> OldBreakfast.HAM == 0
True
>>> NewBreakfast.HAM == 0
False
但是:
>>> IntBreakfast.HAM == 0
True
答案 1 :(得分:0)