先写规律:子类可以调用所有父类中的方法,但是如果遇上方法重名python的多重继承是遵循从左往右继承,深度优先,不多说直接上代码
class grandfather:
def speak(self):
print("this is grandfather_def")
class father(grandfather):
def speak(self):
print("this is father_def")
class son(father):
def speak(self):
print("this is son_def")
class son2(grandfather):
def speak(self):
print("this is son2_def")
class myclass(son, son2):
def speak(self):
print("this is myclass_def")
obj = myclass()
obj.speak() # 执行结果:this is myclass_def
#先执行myclass里的speak方法
class grandfather:
def speak(self):
print("this is grandfather_def")
class father(grandfather):
def speak(self):
print("this is father_def")
class son(father):
def speak(self):
print("this is son_def")
class son2(grandfather):
def speak(self):
print("this is son2_def")
class myclass(son, son2):
pass
obj = myclass()
obj.speak() # 执行结果:this is son_def
#执行的是son类里的方法
class grandfather:
def speak(self):
print("this is grandfather_def")
class father(grandfather):
def speak(self):
print("this is father_def")
class son(father):
pass
class son2(grandfather):
def speak(self):
print("this is son2_def")
class myclass(son, son2):
pass
obj = myclass()
obj.speak() # 执行结果:this is father_def
#执行的是father类的方法
class grandfather:
def speak(self):
print("this is grandfather_def")
class father(grandfather):
pass
class son(father):
pass
class son2(grandfather):
def speak(self):
print("this is son2_def")
class myclass(son, son2):
pass
obj = myclass()
obj.speak() # 执行结果:this is son2_def
#执行的是son2类里的方法
class grandfather:
def speak(self):
print("this is grandfather_def")
class father(grandfather):
pass
class son(father):
pass
class son2(grandfather):
pass
class myclass(son, son2):
pass
obj = myclass()
obj.speak() # 执行结果:this is grandfather_def
#执行的方法是grandfather类的方法