gpt4 book ai didi

python - Traits Range 对象的动态初始化

转载 作者:行者123 更新时间:2023-11-28 20:21:15 24 4
gpt4 key购买 nike

我在尝试动态初始化 Traits Range 对象时遇到问题。

下面的代码是我正在尝试做的一个非常简单的例子,但遗憾的是由于以下类型错误而失败了:

TypeError: unsupported operand type(s) for -: 'int' and 'code'

from traits.api import HasTraits, Int, Range
from traitsui.api import View, Item

class DynamicRange(HasTraits):
"""Dynamic initialisation of a Range object"""
N = Int()
R = Range(low=0, high='N')

traits_view = View(Item('R'), Item('N'))

def __init__(self, N):
self.N = N # initial parameter value for N

def _N_default(self):
return self.N

Robject = DynamicRange(N=10)
Robject.configure_traits()

如果我将“R”的定义替换为:R = Range(low=0, high=10),代码就可以工作,但是当然我不会得到动态初始化我正在寻找的范围的高参数。

感激地接受了所有建议。

* 根据 Jonathan 的回复进行编辑 *

下面是使用 Jonathan 的有用建议对我的问题的简单解决方案:

from traits.api import HasTraits, Range
from traitsui.api import View, Item

class DynamicRange(HasTraits):
"""Dynamic initialisation of a Range object"""
traits_view = View(Item('R'))

def __init__(self, N):
self.add_trait("R", Range(0, N))

Robject = DynamicRange(N=30)
Robject.configure_traits()

最佳答案

一种方法是不以通常的方式定义特征,而是在 __init__ 中定义,因此:

    self.add_trait("R", Range(0, N))

参见 http://docs.enthought.com/traits/traits_user_manual/advanced.html#per-object-trait-attributes

关于python - Traits Range 对象的动态初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28403356/

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