我在嘗試動態初始化特徵範圍對象時遇到了問題。動態初始化特徵範圍對象
下面的代碼是什麼,我試圖做一個很簡單的例子,但可悲的失敗,出現以下類型的錯誤:
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