zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    检测c/c++中内存泄露
    在一个集合S中寻找最大的C使A+B=C且A,B,C均在集合当中
    《为学》
    U盘windows无法格式化的解决办法
    java.lang.AbstractMethodError: oracle.jdbc.driver...解决方法
    sqlplus连接远程Oracle
    oracle字符集导致的乱码问题
    大端与小端存储模式详解
    《劝学》原文
    《报任安书》司马迁
  • 原文地址:https://www.cnblogs.com/mululu/p/9106408.html
Copyright © 2011-2022 走看看