python学习笔记(二十五)重写父类方法

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()

 

posted @ 2018-05-29 17:59  西瓜汁拌面  阅读(297)  评论(0编辑  收藏  举报