• python学习笔记-day10-01-【 类的扩展: 重写父类,新式类与经典的区别】


    上周已经记录过类的许多定义概念,今天接着继承来说说,如何重写父类,以及在Python2与python3中中经典类与新式类的区别。

    一、重写父类

    1、重写,继承父类方法,方法定义完全一样,只是子类实现换成了子类所特有的特性。

    class Zll():
        def smile(self):
            print('哈哈哈哈')
    
    
    class Xz(Zll,Dcg):
        def smile(self):#重写父类的方法
            print('呵呵呵')

    2、重写父类方法,但是还想保持父类本身的实身,子类本身也有自己的实现

    class Zll():
        def smile(self):
            print('哈哈哈哈')
    
        def smile2(self):
            print('哈哈哈哈')
    
    class Dcg():
        def smile2(self):
            print('啊啊啊啊')
    
    class Xz(Zll,Dcg):
        def smile(self):#重写父类的方法
            print('呵呵呵')
    
        def smile2(self): #重写父类的方法
            # Zll().smile2() #调用了父类
            super(Xz, self).smile2()  #这个自动帮你找到父类的
            #如果是单继承的时候,Zll().smile2()与super(Xz, self).smile2()一样
            #如果是多继承的时候,super(Xz, self).smile2()会先找到谁就会用谁了,不会再进行多次调用父类
            print('呵呵呵')
    
    #1、父类的方法一点用的没有,我重新写
    #2、父类有这个方法,但是呢,它的功能不够完善,
    #   给这个方法在原有的基础上,加上
    
    
    # x = Xz()
    # x.smile2()

    二、经典类与新式类的区别

    1、python3中两者的区别

    #经典类与新式类的区别
    
    class My:
        pass
    class My2(object):
        pass
    #在python3是没有任何区别的

    2、python2中两者的区别

    class My:
        pass
    class My2(object):
        pass
    
    
    #在python2里是有区别的
    #在python2里面,一个是深度优先,一个是广度优先


    #python2里
    #经典类是深度优先

    #新式类
    #新式类是广度优先

    #在pyton2经典类里面不能调用super
    #在python3里面都是广度优先
     

      

    总是想多努力一点的人
  • 相关阅读:
    mysql数据库__Jdbc直接操作__PreparedStatement__新增数据库
    GeneralUtils
    java easyExcel框架
    java8 stream流操作
    Java解析json报文案列
    如何避免空指针?
    List、Map集合的遍历方式
    java---关于多态性
    Android环境的搭建
    css+div学习
  • 原文地址:https://www.cnblogs.com/shmily2018/p/9094577.html
Copyright © 2020-2023  润新知