我有复杂的pythonenum
,如下所示:
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
现在,我有一个特殊的函数,通过它的名称来获取enum
:
我想知道有没有什么简单的/Python式的方法可以通过EnzymeNames('name')
或者类似的方法来访问{
编辑:
我想对于我要达到的目标没有什么困惑。我想通过属性得到酶名。例如,EnzymeNames('x')应该给出酶名.酶。在
我已经尝试过以下方法:
>>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'
我建议您对代码稍作重组以使用
namedtuples
。它们是轻量级的,易于创建像enums
这样不可变的对象。请看this post以获得比我能把它们放在一起更好的解释。在下面是添加了两个方法的代码,通过
Properties
属性值检索实例。在代码:
测试代码:
^{pr2}$输出:
你在用哪一个?{3.3.3和你的测试代码
换句话说:使用内置的
Enum
或enum34
后端口,您的代码可以正常工作。在编写枚举的更好方法是将
^{pr2}$Properties
集成到其中:使用中:
编写
enums
的一些一般提示:EnzymeName
而不是EnzymeNames
X
而不是ENZYME_X
Enum
做一些花哨的事情,可以考虑使用^{Enum
和{使用
aenum
,您的代码可能看起来像:相关问题 更多 >
编程相关推荐