- 当子类与父类存在相同的函数名时,子类的函数就会重写父类的函数。
- 如果还是想用父类的函数,可以通过super函数强制调用父类函数。但是当子类与父类存在相同的函数名时,子类的函数仍会重写父类的函数。
验证结论1:
class A():
def __init__(self):
pass
def printf(self):
self.train()
def train(self):
print("yes")
class B(A):
def __init__(self):
super(B, self).__init__()
def train(self): # 子类对父类中相同的函数进行了重写
print("no")
#输出为no
验证结论2:
class A():
def __init__(self):
pass
def printf(self):
self.train()
def train(self):
print("yes")
class B(A):
def __init__(self):
super(B, self).__init__()
super(B, self).train() # 强制调用父类train
def train(self): # 子类对父类中相同的函数进行了重写
print("no")
b = B() #实例化对象,走一遍初始化(__init__)函数
b.printf()
# 输出为#输出为
# yes
# no