title: Difference between using Properties or trait handlers to set dependent variable
body: <p>In Python EPD Traits I can keep variables that depend on others up to date either with a property or with actions in the method that takes care of changes of the 'master' variable. </p>
  
  <p>I show here both ways, first with a Property:</p>
  
  <pre><code>from traits.api import HasTraits, Int, Property
  class MyClass(HasTraits):
      val = Int
      dependent = Property(depends_on = 'val')
  
      def _get_dependent(self):
          return 4*self.val
  </code></pre>
  
  <p>and now with a trait handler:</p>
  
  <pre><code>from traits.api import HasTraits, Int
  class MyClass(HasTraits):
      val = Int
      dependent = Int
  
      def _val_changed(self):
          self.dependent = 4*self.val
  </code></pre>
  
  <p>My question is, when should I use what? While researching this, I realized that one difference is that in the case of using a Property, the 'dependent' variable becomes read-only, if set up like here. But let's say, the dependent is <em>really</em> dependent and I never have enough knowledge to set it directly, is there still a difference that I should be aware of?</p>
  
  <p>Edit: This is similar to my <a href="https://stackoverflow.com/q/9950737/680232">other Traits related question</a>, but not directly related.</p>