我目前正在使用以下类型的枚举:
class System(Enum):
FIRST = 1
SECOND = 2
现在我希望能够做到以下几点:
a = System.FIRST
url = a.getSystemURL()
枚举成员FIRST和SECOND的URL当然不同.
我可以创建一个字典,枚举成员作为键,url作为值,但这不能保证如果我以后添加枚举成员,我会记得添加相应的字典条目.
是否有一种干净的方法来为枚举成员创建具有多个值的枚举?并列举这些不同的价值观?
像这样的东西:
class System(Enum):
Values = (Value, url, something)
FIRST = 1, 'https://www.example.com', 42
SECOND = 2, 'https://www.test.com', 13
解决方法:
文档中有这样的an example.如果类定义__init__方法,则枚举值将作为参数传递给它.这意味着您可以像这样定义枚举:
class System(Enum):
FIRST = 1, 'https://www.example.com', 42
SECOND = 2, 'https://www.test.com', 13
def __init__(self, value, url, something):
self.value_ = value
self.url = url
self.something = something
(注意,value是enums保留的特殊属性,因此我将属性value_命名为避免名称冲突.)
您现在可以在每个枚举成员*问这些属性:
>>> System.FIRST.url
'https://www.example.com'