I have complex python enum
like the following:
from enum import Enum
class Properties:
def __init__(self, name, v, k):
self.name = name
self.v = v
self.k = k
class EnzymeNames(Enum):
ENZYME_X = Properties("x", 0.2, 50)
ENZYME_Y = Properties("y", 1.5, 100)
@property
def v(self):
return self.value.v
@property
def k(self):
return self.value.k
def __str__(self):
return self.value.name
Now currently, I have special function to get an enum
by its name:
def get_enzyme(name) -> EnzymeNames:
for e in EnzymeNames:
if str(e) == name:
return e
I was wondering is there any simple/pythonic way to access enum
just by EnzymeNames('name')
or similar?
Edit:
I think there is little confusion about what I am trying to achieve. I want to get EnzymeNames by property. For example, EnzymeNames('x') should give me EnzymeNames.ENZYME_X.
I have already tried following methods:
>>EnzymeNames('x')
ValueError: 'x' is not a valid EnzymeNames
>>EnzymeNames('ENZYME_X')
ValueError: 'ENZYME_X' is not a valid EnzymeNames
>>EnzymeNames['ENZYME_X']
KeyError: 'ENZYME_X'