Если вы используете Python 3, используйте super
:
class A:
def talk(self):
print('Hi from A-land!')
class B(A):
def talk(self):
print('Hello from B-land!')
def pass_message(self):
super().talk()
b = B()
b.talk()
b.pass_message()
Выход:
Hello from B-land!
Hi from A-land!
Вы можете сделать то же самое в Python 2, если наследуете от object
и задаете параметры super
:
class B(A):
def talk(self):
print('Hello from B-land!')
def pass_message(self):
super(B, self).talk()
b = B()
b.talk()
b.pass_message()
Выход:
Hello from B-land!
Hi from A-land!
Вы также можете вызвать метод, как если бы это была свободная функция:
A.talk(b)
B.talk(b) # the same as b.talk()
Выход:
Hi from A-land!
Hello from B-land!