# Copyright (c) 2007, Enthought, Inc. # License: BSD Style. from traits.api import Float, HasTraits, Trait class Part(HasTraits): cost = Trait(0.0) class Widget(HasTraits): part1 = Trait(Part) part2 = Trait(Part) cost = Float(0.0) def __init__(self): self.part1 = Part() self.part2 = Part() self.part1.on_trait_change(self.update_cost, 'cost') self.part2.on_trait_change(self.update_cost, 'cost') def update_cost(self): self.cost = self.part1.cost + self.part2.cost