2015-10-25 22 views
0

我經常發現自己在這種情況下:性狀API創建新的特點和特質改變行爲

class A:... 

B=class 
    a=Instance(A,()) 
    @on_trait_change('a')##I would really like to be able to do this 
    def do_something(...) 

我認爲目前這觸發如果你對類的全部復位。例如B = B()。 b.a = A()應該觸發它。但是我想控制我的自定義類表明它已經「改變」了。如果僅僅是A的一個成員被改變,例如每個人可能會像A一樣發信號通知'已改變'。 b.a.x + = 1

回答

2

如果AB都來自HasTraits,那麼將您的修飾器更改爲@on_trait_change('a.+')將會做你想做的。如果您將do_something的簽名更改爲兩個或更多參數,則您甚至可以檢測到a的哪些屬性發生了更改。 (請參閱http://traits.readthedocs.org/en/latest/traits_user_manual/notification.html#notification-handler-signatures

+0

是的,我想我應該解決這個問題......我並沒有從字面上做我想做的事,儘管 – user3391229

+0

這聽起來像你想要的是自己手動管理事件,這些特質當然可以讓你去做。 – aestrivex