我在将 Enum 值设置为类中的一种可能性时遇到问题...
如果我在 iPython 窗口中:
eTest = Enum('zero', 'one', 'two', 'three')
我可以:
eTest.value = eTest.values[2]
print eTest.value
给了我正确的答案:两个我在 python 类中尝试同样的事情,它告诉我:
AttributeError: 'str' object has no attribute 'values'
如何将 eTest 设置为具有枚举的 [3] 值而不必输入单词“三”?
最佳答案
您不能使用这样的 Enum
对象。 Enum
对象只是一种声明,它告诉 HasTraits
类具有其中之一,以创建执行特定类型验证的实例属性。此实例属性将不是 Enum
对象:它将是枚举值之一。您在 .value
对象上修改的 Enum
属性只会更改默认值。这不是您在对象的生命周期内设置的内容。
from traits.api import Enum, HasTraits, TraitError
ETEST_VALUES = ['zero', 'one', 'two', 'three']
class Foo(HasTraits):
eTest = Enum(*ETEST_VALUES)
f = Foo()
assert f.eTest == 'zero'
f.eTest = 'one'
f.eTest = ETEST_VALUES[3]
try:
f.eTest = 'four'
except TraitError:
print 'Oops! Bad value!'
您可以按照我上面的示例将列表与
Enum()
调用分开,并在需要时对其进行索引。关于python - 特征枚举值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24918647/