Документация Python из super
состояния:
Это полезно для доступа к унаследованным методам, которые были переопределены в классе.
Есть ли смысл вызывать super().method()
в подклассе, который не переопределяет method
?
Для меня это не так, поскольку вызов self.method()
будет в точности идентичным, то есть наследование будет искать method
в суперклассах self
с использованием того же порядка разрешения type(self).__mro__
метода (заданного C3 линеаризация иерархии суперклассов self
), чем super
.
Так что мне super
пригодится в этой ситуации:
class A:
def f(self):
print("A")
class B:
pass
class C(B, A):
def f(self):
super().f()
print("C")
C().f() # prints A C
но не в этом:
class A:
def f(self):
print("A")
class B:
pass
class C(B, A):
def g(self):
super().f() # should be just self.f()
print("C")
C().g() # prints A C