擅长:python、mysql、java
<p>我建议您对代码稍作重组以使用<code>namedtuples</code>。它们是轻量级的,易于创建像<code>enums</code>这样不可变的对象。请看<a href="https://stackoverflow.com/a/2970722/7311767">this post</a>以获得比我能把它们放在一起更好的解释。在</p>
<p>下面是添加了两个方法的代码,通过<code>Properties</code>属性值检索实例。在</p>
<p><strong>代码:</strong></p>
<pre><code>from enum import Enum
import collections
import math
Properties = collections.namedtuple('Properties', 'v k')
class EnzymeNames(Enum):
x = Properties(0.2, 50)
y = Properties(1.5, 100)
@property
def v(self):
return self.value.v
@property
def k(self):
return self.value.k
@classmethod
def from_v(cls, v):
for en in cls:
if math.isclose(en.v, v):
return en
@classmethod
def from_k(cls, k):
for en in cls:
if math.isclose(en.k, k):
return en
</code></pre>
<p><strong>测试代码:</strong></p>
^{pr2}$
<p><strong>输出:</strong></p>
<pre><code>EnzymeNames.y
name: y
k: 100
v: 1.5
</code></pre>