title: Python descriptors __get__ and __set__
body: <p>I am sure this will be marked as a duplicate, but I truly don't understand what I'm looking at.  I've checked The python documentation on Descriptors, but I have been "programming" in Python for two weeks now and I don't really know what I'm looking for!</p>
  
  <p>This is what I got:</p>
  
  <pre><code>&gt;&gt;&gt; class Blub(object):
  ...     def __init__(self, value):
  ...             print('Blub is ' + value)
  ...             self.value = value
  ...     def __get__(self):
  ...             print('Blub gets ' + self.value)
  ...             return self.value
  ...     def __set__(self, value):
  ...             print('Blub becomes ' + value)
  ...             self.value = value
  ...
  &gt;&gt;&gt; class Quish(object):
  ...     def __init__(self, value):
  ...             self.blub = Blub(value)
  ...     def __get__(self):
  ...             return self.blub
  ...     def __set__(self, value):
  ...             self.blub = Blub(value)
  ... 
  </code></pre>
  
  <p>The following is what I want to happen and don't know how to do:</p>
  
  <pre><code>&gt;&gt;&gt; a = Quish('One')
  Blub is One
  &gt;&gt;&gt; a.blub
  Blub gets One
  'One'
  a.blub = 'Two'
  Blub becomes Two
  </code></pre>
  
  <p>What do I do in Blub or Quish in order for this to happen.  I have really simple classes here, but I have a much more intricate version which works perfectly but only if I type:</p>
  
  <pre><code>&gt;&gt;&gt; a.blub.__get__()
  </code></pre>
  
  <p>I thought that the point of these descriptors was to make it unnecessary to actually write <strong>get</strong>() and <strong>set</strong>().  How do I make it behave like I would like, or can Python not do that?</p>