я ничего не понял из подобного описания проблемы и каким боком тут менеджеры контекста, но возможно ты хотел сделать это:
перечитав еще раз :)
class Test:
def do(self, cb=None):
print("i am test")
if callable(cb):
cb()
print("i am test")
class Test2(Test):
def do(self):
super().do(self.mycb)
def mycb(self):
print("i am test2")
t = Test2()
t.do()
i am test
i am test2
i am test
или так:
class Test:
def do(self):
print("i am test")
if hasattr(self, 'mycb'):
self.mycb()
print("i am test")
class Test2(Test):
def mycb(self):
print("i am test2")
t = Test2()
t.do()