我无法将枚举值设置为其中一个可能的类...
如果我在iPython窗口中:
eTest = Enum('zero', 'one', 'two', 'three')
Run Code Online (Sandbox Code Playgroud)
我可以:
eTest.value = eTest.values[2]
Run Code Online (Sandbox Code Playgroud)
并print eTest.value给我正确的答案:两个
我在python类中尝试相同的东西,它告诉我:
AttributeError: 'str' object has no attribute 'values'
Run Code Online (Sandbox Code Playgroud)
如何设置eTest以获得Enums的[3]值而无需输入"three"这个词?
你不能使用这样的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!'
Run Code Online (Sandbox Code Playgroud)
如何设置eTest以获得Enums的[3]值而无需输入"three"这个词?
您可以按照我上面的示例将列表与Enum()调用分开,并在需要时将其编入索引.