Decoradores de Python y herencia

Ayuda a un chico. Parece que no puede hacer que un decorador trabaje con herencia. Lo resumí en el pequeño ejemplo más simple en mi espacio de trabajo temporal. Parece que todavía no puedo hacerlo funcionar.

class bar(object):
    def __init__(self):
        self.val = 4
    def setVal(self,x):
        self.val = x
    def decor(self, func):
        def increment(self, x):
            return func( self, x ) + self.val
        return increment

class foo(bar):
    def __init__(self):
        bar.__init__(self)
    @decor
    def add(self, x):
        return x

Vaya, el nombre "decoración" no está definido.

Ok, que tal@bar.decor? TypeError: el método independiente "decor" se debe llamar con una instancia de barra como primer argumento (en su lugar, se obtuvo una instancia de función)

Ok, que tal@self.decor? El nombre "self" no está definido.

Ok, que tal@foo.decor?! El nombre "foo" no está definido.

AaaaAAaAaaaarrrrgggg ... ¿Qué estoy haciendo mal?

Respuestas a la pregunta(1)

Su respuesta a la pregunta