Я наткнулся на хитрый вопрос по питону.Дано ( updated ):
class A(object):
def run(self):
# This makes possible to determine if 'run' was overridden
if self.run.im_func != A.run.im_func:
print('Running in {0}'.format(self.__class__.__name__))
class B(A):
def run(self):
super(B, self).run()
class C(A):
pass
b = B()
c = C()
b.run()
>>> Running in B
c.run()
>>> # nothing :)
Как бы вы разработали декоратор @runoverriden, который бы выполнял работу условного оператора в A.run ()?
Обновление: Целью этого кода является то, что A.run () должен регистрировать вызовы run (), только если он был переопределен.
Спасибо!