title: 'super' object not calling __getattr__
body: <p>I have one object wrapped inside another.
  The "Wrapper" accesses the attributes from the "Wrapped" object by overriding <code>__getattr__</code>.
  This works well until I need to override an atribute on a sub class, and then access the attribute from the base class using <code>super()</code>.</p>
  
  <p>I can still access the attribute directly from <code>__getattr__</code> but why does <code>super()</code> not work?</p>
  
  <pre><code>class Wrapped(object):
      def __init__(self, value):
          self.value = value
  
      def hello_world(self):
          print 'hello world', self.value
  
  class Wrapper(object):
      def __init__(self, obj):
          self.wrapped_obj = obj
  
      def __getattr__(self, name):
          if name in self.__dict__:
              return getattr(self, name)
          else:
              return getattr(self.wrapped_obj, name)
  
  class Subclass(Wrapper):
      def __init__(self, obj):
          super(Subclass, self).__init__(obj)
  
      def hello_world(self):
          # this works
          func = super(Subclass, self).__getattr__('hello_world')()
          # this doesn't
          super(Subclass, self).hello_world()
  
  a = Wrapped(2)
  b = Subclass(a)
  b.hello_world()
  </code></pre>