title: Property getter/setter have no effect in Python 2
body: <p>I'm a bit confused about properties in python. Consider the following code</p>
  
  <pre><code>class A:
      @property
      def N(self):
          print("A getter")
          return self._N
      @N.setter
      def N(self,v):
          print("A setter")
          self._N = v
  
      def __init__(self):
          self._N = 1
  
  class B:
      @property
      def N(self):
          print("B getter")
          return self.a.N
      @N.setter
      def N(self,v):
          print("B setter")
          self.a.N = v
  
      def __init__(self):
          self.a = A()
  
  if __name__ == '__main__':
      b=B()
      b.N = 2
      print(b.N, b.a.N)
      b.N = 3
      print(b.N, b.a.N)
  </code></pre>
  
  <p>B should be something like a wrapper for A. It uses getters and setters to map A's properties on itself (of course one could also do it via inheritance).
  The problem is, that it simply doesn't work as expected in python2.6 while it does in python3:</p>
  
  <pre><code>&gt; python2 test.py
  A getter
  (2, 1)
  A getter
  (3, 1)
  
  &gt; python3 test.py
  B setter
  A setter
  B getter
  A getter
  A getter
  2 2
  B setter
  A setter
  B getter
  A getter
  A getter
  3 3
  </code></pre>
  
  <p>Am I doing anything wrong or where exactly is the problem?</p>