objeto 'super' não chamando __getattr__

Eu tenho um objeto embrulhado dentro de outro. O "Wrapper" acessa os atributos do objeto "Wrapped" substituindo__getattr__. Isso funciona bem até que eu precise substituir um atributo em uma subclasse e, em seguida, acessar o atributo da classe base usandosuper().

Ainda posso acessar o atributo diretamente de__getattr__ mas por quesuper() não funciona?

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()

questionAnswers(1)

yourAnswerToTheQuestion