zoukankan      html  css  js  c++  java
  • python新式类和经典类的区别

    python新式类和经典类的区别

     

    1)首先,写法不一样:

    classA:passclassB(object):pass

    2)在多继承中,新式类采用广度优先搜索,而旧式类是采用深度优先搜索。

    3)新式类更符合OOP编程思想,统一了python中的类型机制。

    Python 2.x中默认都是经典类,只有显式继承了object才是新式类

    Python 3.x中默认都是新式类,不必显式的继承object

     

     

    其次:

    ------新式类对象可以直接通过__class__属性获取自身类型:type

    ------继承搜索的顺序发生了改变,经典类多继承属性搜索顺序: 先深入继承树左侧,再返回,开始找右侧;新式类多继承属性搜索顺序: 先水平搜索,然后再向上移动

    ------新式类增加了__slots__内置属性, 可以把实例属性的种类锁定到__slots__规定的范围之中

    ------新式类增加了__getattribute__方法

    class A(): def __init__(self): pass def save(self): print "This is from A" class B(A): def __init__(self): pass class C(A): def __init__(self): pass def save(self): print "This is from C" class D(B,C): def __init__(self): pass fun = D() fun.save() 经典类的答案: This is from A 新式类的答案: This is from C
  • 相关阅读:
    58.与人相处的艺术
    26.随时随俗
    24.心平气和
    61.扶树与扶人
    47.非要坚持下去吗
    42.有“舍”才有“得”
    62.离阳光只有五十米
    49.用微笑把痛苦埋葬
    60.换个角度,你便是赢家
    35.忍是大智、大勇、大福
  • 原文地址:https://www.cnblogs.com/amengduo/p/9586527.html
Copyright © 2011-2022 走看看