加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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!'

how can I set eTest to have the [3] value of the Enums without having to type in the word ‘three’?

您可以按照上面的示例将列表与Enum()调用分开,并在需要时将其编入索引.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读