我无法将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以获得Enums的[3]值而无需输入单词' three'?
答案 0 :(得分:7)
您不能使用此类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!'
如何设置eTest以获得Enums的[3]值而无需输入“three”这个词?
您可以按照上面的示例操作,将列表与Enum()
调用区分开来,并在需要时将其编入索引。