【发布时间】:2015-01-24 11:35:29
【问题描述】:
我在 Python 的 Enum 类中发现了一个非常奇怪的行为。所以枚举类型很简单:
from enum import Enum
Analysis = Enum('Analysis', 'static dynamic')
所以我在step对象中使用了这个枚举类型,以便他们将其存储在属性分析中,如下:
class Step:
def __init__(self):
self.analysis = None
self.bcs = []
到目前为止非常简单,所以当我在列表中有一些这些步骤时,我会尝试查看枚举类型并且它已被正确分配。但它们并不相等:
# loop over steps
for s, step in enumerate(kwargs['steps']):
print(kwargs)
print(step)
print(step.analysis)
print("test for equality: ",(step.analysis == Analysis.static))
quit()
打印出来的
{'mesh': <fem.mesh.mesh.Mesh object at 0x10614d438>,
'steps': [<hybrida.fem.step.Step object at 0x10614d278>,
<hybrida.fem.step.Step object at 0x10616a710>,
<hybrida.fem.step.Step object at 0x10616a390>]}
Step:
analysis: Analysis.static
bcs: [<hybrida.fem.conditions.dirichlet.Dirichlet object at 0x10616a0f0>,
<hybrida.fem.conditions.dirichlet.Dirichlet object at 0x10616a320>,
<hybrida.fem.conditions.dirichlet.Dirichlet object at 0x10616a3c8>,
<hybrida.fem.conditions.dirichlet.Dirichlet object at 0x10616a470>,
<hybrida.fem.conditions.dirichlet.Dirichlet object at 0x10616a518>,
<hybrida.fem.conditions.dirichlet.Dirichlet object at 0x10616a5c0>,
<hybrida.fem.conditions.dirichlet.Dirichlet object at 0x10616a668>]
Analysis.static
test for equality: False
这是不正确的,但我不知道如何调试它。
更新
按照@martineau 的建议,我创建了一个IntEnum,这解决了我的问题。然而,我不明白为什么普通的Enum 不起作用。
【问题讨论】:
-
我读了一个文件。我试图提出一个简约的例子,但它工作正常,所以我不知道出了什么问题。
-
如果我按照您建议的方式进行操作,我会得到
AttributeError: static。见this post。 -
哦,我明白了,我尝试了不同的
enum包。也许您应该将此添加到您的问题中。 -
有什么不同的枚举包?我正在使用的包在帖子中说明。
-
那么你如何做你设置
step.analysis?请在您的问题中添加相关代码。
标签: python python-3.x enums enumeration