gpt4 book ai didi

python - 实例化 Enthought 特征的默认实例

转载 作者:太空宇宙 更新时间:2023-11-04 08:53:45 24 4
gpt4 key购买 nike

考虑这个简单的最小示例:

from traits.api import Instance, Str, HasTraits

class Person(HasTraits):
name = Str("hooked")

class Chair(HasTraits):
sitting = Instance(Person)

t = Chair()
print t.sitting.name

这会失败,因为 t.sitting 的计算结果为 NoneEnthought's traits module将强制 t.sitting 的类型是 Person 但我怎样才能让默认人在这里实例化?我不想将任何参数传递给 Chair(**kwargs) 我希望它自动完成。 print 语句的预期输出是 hooked

最佳答案

您已经明确定义了 Chair,因此它的默认实例不会实例化其属性 sitting,这就是正在发生的事情。如果您希望默认实例化 sitting,那么您可以。

所以选择吧。如果您想保留 Chair 的原始定义,但这次确保将 sitting 实例化为其默认值,则:

from traits.api import Instance, Str, HasTraits

class Person(HasTraits):
name = Str("hooked")

class Chair(HasTraits):
sitting = Instance(Person)

t = Chair(sitting=Person())
print t.sitting.name

但是,如果您希望始终使用默认的 sitting 实例化默认的 Chair,那么(编辑:并显示 traitsui 的实际效果):

from traits.api import Instance, Str, HasTraits
from traitsui.api import Item, View

class Person(HasTraits):
name = Str("hooked")

class Chair(HasTraits):
sitting = Instance(Person,())
view = View((Item( 'sitting', style = 'custom')))

t = Chair()
print t.sitting.name
t.configure_traits()

# or overridden by:
w = Chair(sitting=Person(name='snooked'))
print w.sitting.name

关于python - 实例化 Enthought 特征的默认实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32401318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com