python继承中,如果子类在调用某个方法时,它首先是从派生类(也就是当前类)中去找对应的方法,如果当前类中找不到对应的方法,就会去基类(派生类)中去逐个查找。
若父类的方法不能满足子类的需要,那么子类就可以重写或者完善父类的方法。
例如:
# coding=utf-8
class Father():
def smile(self):
print('哈哈哈')
class Son(Father):
def smile(self): #重写父类的方法
Father().smile() #调用了父类,这种属于在父类的基础上完善父类的方法,若不调用父类的smile()方法就属于完全舍弃父类的此功能来重写这个方法
super(Son,self).smile()#这个是自动找到父类中的smile方法,如果继承了多个父类,那么会按照继承的父类的顺序去一个一个找
print('呵呵呵')
s= Son()
s.smile()
如果继承了多个父类,多个父类中都有子类要重写完善的方法,那么可以使用上面的Father().smile()调用,也可以使用一个逼格较高的super来调用,super会从继承的父类里一个一个去找,先在哪个类里找到就继承哪个类里的该方法。代码如下:
# coding=utf-8
class Zll():
# def smile(self):
# print('哈哈哈')class Dcg():
def smile(self):
print('啊啊啊啊啊')
class Lw():
def smile(self):
print('嘿嘿嘿')
class Xz(Zll,Dcg,Lw):
def smile(self): #重写父类的方法
# Dcg().smile() #调用了父类
# super(Xz,self).smile() #这个自动帮你找到父类的,如果这样写会按继承顺序,Zll、Dcg、Lwy一个一个去找,先在哪个类中找到就先使用哪个类里的smile方法
print('呵呵呵')
x = Xz()
x.smile()