A decorator as class method

class Test(object):
    def _decorator(foo):
        def magic( self ) :
            print("start magic")
            foo(self)
            print("end magic")
        return magic

    @_decorator
    def bar(self) :
        print("normal call")

class TestB(Test):

    @TestB._decorator
    def bar(self):
        print("override bar in")
        super().bar()
        print("override bar out")

print("Normal:")
test = Test()
test.bar()
print()

print("Inherited:")
b = TestB()
b.bar()
print()