如何让 Enum 中的元素默认评估为它们的值?
How can I have elements in an Enum evaluate as their value by default?
无论如何我可以有一个像下面这样的枚举
class Key(Enum):
CUSTOMER_ID = 'c_id'
PHONE_NUMBER = 'phone'
这样调用 Key.CUSTOMER_ID
默认情况下计算结果为 'c_id'
,而不需要调用 CUSTOMER_ID.value
?
是否有任何我可以覆盖的方法来更改评估时返回的对象的内容?
当你想让Enum成员作为他们的值来求值时,你需要mixin他们的值类型:
class Key(str, Enum): # note that `str` is before `Enum`
CUSTOMER_ID = 'c_id'
PHONE_NUMBER = 'phone'
并在使用中:
>>> Key.PHONE_NUMBER == 'phone'
True
无论如何我可以有一个像下面这样的枚举
class Key(Enum):
CUSTOMER_ID = 'c_id'
PHONE_NUMBER = 'phone'
这样调用 Key.CUSTOMER_ID
默认情况下计算结果为 'c_id'
,而不需要调用 CUSTOMER_ID.value
?
是否有任何我可以覆盖的方法来更改评估时返回的对象的内容?
当你想让Enum成员作为他们的值来求值时,你需要mixin他们的值类型:
class Key(str, Enum): # note that `str` is before `Enum`
CUSTOMER_ID = 'c_id'
PHONE_NUMBER = 'phone'
并在使用中:
>>> Key.PHONE_NUMBER == 'phone'
True