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' 
 
     
     
    