How to use the hidden decorator in another class in Python?
class TestA(object): def _decorator(foo): def magic(self): print("Start magic") foo(self) print("End magic") return magic @_decorator def bar(self): print("Normal call") _decorator = staticmethod(_decorator) class TestB(TestA): @TestA._decorator def bar(self): print("Override bar in") super(TestB, self).bar() print("Override bar out") print("Normal:") test = TestA() test.bar() print('-' * 10) print("Inherited:") b = TestB() b.bar()
Output
Normal: Start magic Normal call End magic ---------- Inherited: Start magic Override bar in Start magic Normal call End magic Override bar out End magic