• 重写父类的方法及经典类和新式类的区别


    1.父类重写的实例展示 (继承才有父类)

    # coding=utf-8

    class Zll():

             # def smile(self):

             #      print('哈哈哈')

             #      return 'aa'

             pass

    class Dcg():

             def smile(self):

                       print('啊啊啊啊啊')

    class Lw():

             def smile(self):

                       print('嘿嘿嘿')

    class Xz(Zll,Dcg,Lw):   #继承多个父类依次找父类是否有该方法,有就调用。

             def smile(self):   #重写父类的方法

                       # Dcg().smile()  #调用了父类   通过Dcg().实例化再调用。指定了父类

                       # super(Xz,self).smile()  #这个自动帮你找到父类的   super 后面写自己 和上述方法一样效果(貌似高逼格),修改父类的构造方法

                       print('呵呵呵')

    x = Xz()  #实例化

    x.smile()  #调用

    对于父类使用的两种需求:

    #1、父类的方法一点用的没有,我重新写的 比如重写smile方法。

    #2、 父类有这个方法,但是呢,它的功能不够完善,给这个方法在原有的基础上,再

    #给他添加一些新功能,比如子类中直接调用父类的方法。

    2. 经典类和新式类的区别:

          1) #pthon2里面,多继承的时候

            #经典类是深度优先,

            # 新式类是广度优先

            #python3里面都是广度优先

            2)python2 经典类里面不能用super

                python3里面经典类和新式类没有任何的区别。

    例子

    class My:

             pass

    class My2(object):   #新式类

             pass

    #python3里面没有任何的区别

    深度和广度优先(python2中)

    class A(object):      #这样就广度优先

        def x(self):

            print('A')

    class B(A):

        # def x(self):

        #     print('B')       

        pass

    class C(A):

        def x(self):

            print('C')

    class D(B,C):

        pass

    s = D()     ###  结果找B  没有就找A  最后C(深度优先,经典类)

    s.x()      ###

  • 相关阅读:
    idea中编译项目报错 java: javacTask: 源版本 1.8 需要目标版本 1.8
    发布返回结果对象中添加冒泡结果字段
    Spring还使用基于 JSR-250 注释,它包括 @PostConstruct, @PreDestroy 和 @Resource 注释
    跨网段IP
    Vlan
    分区工具parted的详解及常用分区使用方法
    dump命令详解
    备份 (综述)
    firewalld 防火墙配置
    find、which、whereis、locate和type之间的区别
  • 原文地址:https://www.cnblogs.com/cslw5566/p/9102792.html
Copyright © 2020-2023  润新知