Допустим, у меня есть классы Base(object)
и Derived(Base)
.Они оба реализуют функцию foo
, с Derived.foo
, переопределяющей версию в Base
.
Однако в одном из методов, скажем Base.learn_to_foo
, я хочу вызвать Base.foo
вместопроизводная версия независимо от того, была ли она переопределена.Итак, я называю Base.foo(self)
в этом методе:
class Base(object):
# ...
def learn_to_foo(self, x):
y = Base.foo(self, x)
# check if we foo'd correctly, do interesting stuff
Этот подход, кажется, работает и с точки зрения предметной области, он имеет смысл, но почему-то пахнет немного подозрительно.Это путь, или я должен рефакторинг?