I'm currently working with an enum of the following type:
class System(Enum):
FIRST = 1
SECOND = 2
Now I'd like to be able to do the following:
a = System.FIRST
url = a.getSystemURL()
where the url for the enumeration members FIRST
and SECOND
are different of course.
I could create a dictionary with the enumeration members as keys and the urls as values, but this won't assure that if I later add an enumeration member I'll remember to add corresponding the dictionary entry.
Is there a clean way to have an enumeration with multiple values for the enumeration members? And to name these different values?
Something like this:
class System(Enum):
Values = (Value, url, something)
FIRST = 1, 'https://www.example.com', 42
SECOND = 2, 'https://www.test.com', 13
There is an example like this in the documentation. If the class defines an __init__
method, the enum values will be passed to it as arguments. This means you can define your enum like so:
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
(Note that value
is a special attribute reserved by enums, so I named the attribute value_
to avoid a name clash.)
You can now access these attributes on each enum member:
>>> System.FIRST.url
'https://www.example.com'