python – Traits枚举值
发布时间:2020-12-20 11:36:39 所属栏目:Python 来源:网络整理
导读:我无法将枚举值设置为其中一个可能的类… 如果我在iPython窗口中: eTest = Enum('zero','one','two','three') 我可以: eTest.value = eTest.values[2] 并打印eTest.value给出了正确的答案:两个 我在python类中尝试相同的东西,它告诉我: AttributeError:
我无法将枚举值设置为其中一个可能的类…
如果我在iPython窗口中: eTest = Enum('zero','one','two','three') 我可以: eTest.value = eTest.values[2] 并打印eTest.value给出了正确的答案:两个 我在python类中尝试相同的东西,它告诉我: AttributeError: 'str' object has no attribute 'values' 如何设置eTest以获得Enums的[3]值而无需输入“three”这个词? 解决方法
您不能使用这样的Enum对象. Enum对象只是一种声明,它告诉具有其中一个的HasTraits类创建一个执行特定验证的实例属性.此实例属性不是Enum对象:它将是枚举值之一.您在Enum对象上修改的.value属性只会更改默认值.这不是你在对象生命周期中设置的东西.
from traits.api import Enum,HasTraits,TraitError ETEST_VALUES = ['zero','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()调用分开,并在需要时将其编入索引. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |