У меня возникли проблемы с попыткой динамически инициализировать черты Диапазон объект.Динамическая инициализация объектов Область Объект
Следующий код является очень простым примером того, что я пытаюсь сделать, но, к сожалению, не может со следующей ошибкой типа:
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), но тогда, конечно, я не получаю динамическую инициализацию высокого параметра Range, который я ищу.
Все предложения с благодарностью приняты.
* Редактирование после ответа Джонатана *
Вот простое решение на мой вопрос, используя полезный совет Джонатана ниже:
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