2016-07-09 70 views
0

下面的代碼不起作用:如何改變枚舉可能值

from traits.api import HasTraits, Enum 

class A(HasTraits): 

    enum = Enum(1,2,3) 

class B(A): 

    def __init__(self): 
     self.trait('enum').default_value = ['one','two','three'] 

b = B() 
b.configure_traits() 

而是有選擇的[「一」,「二」,「三化」在下拉列表中,它是仍然[1,2,3]。有沒有辦法在聲明一次之後以任何方式修改Enum內容?

回答

2

如果你想,當你從A繼承B改變enum性狀值,你可以重新定義,像這樣的特點:

class B(A): 
    enum = Enum(['one', 'two', 'three']) 

如果你希望能夠改變的值Enum動態地,Enum構造函數採取values參數,您可以傳遞另一個特徵的名稱,該特徵包含一個定義值的特徵(如下所示)的序列,然後更改該列表中的值或整個序列中的值任何你想要的方式:

from traits.api import Enum, HasTraits, List 


class A(HasTraits): 
    values = List([1, 2, 3]) 
    enum = Enum(values='values') 


a = A() 
a.configure_traits() 
+0

'enum = Enum(values ='values')'正是我所需要的,它完美地工作。我還不熟悉爲後期綁定傳遞參數作爲標識符字符串! –

+0

http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

+0

@YvesSurrel - FYI堆棧溢出協議是標記答案爲接受,如果它回答你的問題。有關原因的解釋,請參閱我昨天發佈的鏈接。 –