我在尝试动态初始化特征范围对象时遇到了问题。动态初始化特征范围对象
下面的代码是什么,我试图做一个很简单的例子,但可悲的失败,出现以下类型的错误:
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 =范围(低= 0,高= 10),但当然我没有得到我正在寻找范围的高参数的动态初始化。
感谢您接受所有建议。
*后编辑乔纳森的响应*
下面是使用乔纳森的下面有帮助的建议,我的问题简单的解决方案:
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()
是的,那工作 - 谢谢乔纳森! – dreme 2015-02-10 00:56:27