title: Understanding __get__ and __set__ and Python descriptors
body: <p>I am <em>trying</em> to understand what Python's descriptors are and what they are useful for. I understand how they work, but here are my doubts. Consider the following code:</p>
  
  <pre><code>class Celsius(object):
      def __init__(self, value=0.0):
          self.value = float(value)
      def __get__(self, instance, owner):
          return self.value
      def __set__(self, instance, value):
          self.value = float(value)
  
  
  class Temperature(object):
      celsius = Celsius()
  </code></pre>
  
  <ol>
  <li><p>Why do I need the descriptor class?</p></li>
  <li><p>What is <code>instance</code> and <code>owner</code> here? (in <code>__get__</code>). What is the purpose of these parameters?</p></li>
  <li><p>How would I call/use this example?</p></li>
  </ol>