• python新式类和经典类的区别


    父类或者以上有继承的object就是新式类 没有的则是经典类
    1,新式类和经典类的区别:
    广度优先和深度优先,这主要是在多类继承的时候会使用到,如下多类继承的D类对比:
    “新式类”和“经典类”的区分在Python 3之后就已经不存在,在Python 3.x之后的版本,因为所有的类都派生自内置类型object(即使没有显示的继承object类型),即所有的类都是“新式类”。
    经典类在加载的时候采用的是深度优先算法,二新式类采用的是广度优先算法:比如
    经典类: 搜索顺序是(D,B,A,C)

    >>>class A: attr = 1
    ...
    >>> class B(A): pass
    ...
    >>> class C(A): attr = 2
    ...
    >>> class D(B,C): pass
    ...
    >>> x = D()
    >>> x.attr
    1
    

    新式类继承搜索程序是宽度优先
    新式类:搜索顺序是(D,B,C,A)

    >>> class A(object): attr = 1
    ...
    >>> class B(A): pass
    ...
    >>> class C(A): attr = 2
    ...
    >>> class D(B,C): pass
    ...
    >>> x = D()
    >>> x.attr
    2
    

    原文链接

  • 相关阅读:
    面向过程
    生成器
    迭代器
    装饰器
    函数及嵌套
    字符编码与文件操作
    linux_ssh
    LNMP
    BZOJ 3238: [Ahoi2013]差异
    BZOJ 3998: [TJOI2015]弦论
  • 原文地址:https://www.cnblogs.com/linqiaobao/p/13285446.html
Copyright © 2020-2023  润新知