在子类中,
super().__ init __(name,age)
或者super().run()等调用父类其他方法,都可以避免重复改写父类名,也可以省略self参数
也可以避免在砖石继承中调用两次基类的方法
class baseClass:
num_base_calls = 0
def call_me(self):
print('calling method on Base Class')
self.num_base_calls += 1
class leftClass(baseClass):
num_lesf_calls = 0
def call_me(self):
super().call_me()
print('calling method on Left Class')
self.num_lesf_calls += 1
class rightClass(baseClass):
num_right_calls = 0
def call_me(self):
super().call_me()
print('calling methon on Right Class')
self.num_right_calls += 1
class subClass(leftClass,rightClass):
num_sub_calls = 0
def call_me(self):
super().call_me()
print('calling methon on Sub Class')
self.num_sub_calls += 1
p1 = subClass()
p1.call_me()
print(p1.num_sub_calls)
print(p1.num_right_calls)
print(p1.num_lesf_calls)
print(p1.num_base_calls)
输出:
calling method on Base Class
calling methon on Right Class
calling method on Left Class
calling methon on Sub Class
1
1
1
1