title: Python Traits- call function at parent level, when item modified in a List
body: <p>I am trying to use Traits to monitor and perform some aggregating/statistical functions on a List.  To simplify the problem, lets say I have a "TestScore" object, which consists of a name, a score, and a quartile.  I then have a "TestBundle" which consists of a List of TestScore.  If a score is updated for one of the TestScore objects, I want to call some functionality that will re-calculate the quartile for all TestScore objects in the list.  I have tried the following:</p>
  
  <pre><code>from traits.api import \
      Float, List, HasTraits, Str, on_trait_change
  
  class TestResult(HasTraits):
      name = Str
      score = Float
      quartile = Float
  
  class TestBundle(HasTraits):
      tests = List(TestResult)
  
      @on_trait_change('tests[]')
      def update_quartiles(self):
          # Code to go over all tests and update the quartile based
          # on score
          print "Updating Quartiles"
  </code></pre>
  
  <p>However this only seems to fire when a TestScore is added or removed from the TestBundle.tests list.  Is there a way to fire whenever one of the constituents of tests is modified?</p>