Traits List处理程序不对+ = list扩展作出反应

时间:2014-03-26 14:31:55

标签: python enthought traits

from traits.api import List, HasTraits

class Foo(HasTraits):
   x = List
   def _x_items_changed(self,new):
      print new.added

f = Foo()
f.x = [1,3]
f.x.append(9) #handler reacts!
f.x += [9,10] # handler does not react! Why?

我在这里缺少什么?

谢谢!

1 个答案:

答案 0 :(得分:4)

这是一个错误。 TraitListObject会覆盖extend()和其他变异方法来传播更改,但__iadd__()被忽略了。解决方法是使用extend()代替+=