zoukankan      html  css  js  c++  java
  • python学习笔记(二十六)经典类和新式类的区别

    首先了解一下什么是经典类,什么是新式类
    class Person: #经典类
        pass
    class Person2(object):  #新式类
        pass
    #类名首字母都大写
    #在python3里面经典类和新式类没有任何区别
    经典类与新式类在python3中是没有任何区别的,主要区别是在python2中多继承的时候。
    区别:
    经典类是:深度优先
    新式类是:广度优先
    在python3里面都是广度优先
    下面我们举例子来说明:
    class A:   #这样定义A是经典类
        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()
    s.x()
    class A(object):   #这样定义A是新式类
        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()
    s.x()

    以下分析情况都是基于python2

    1.这样定义A类,A是经典类,那么在继承后D调用x()方法的时候顺序是怎样的呢?

       首先是从B类里面去找x()方法,如果B类中没有,就会从A类里面去找,如果A类中也没有x()方法,最后才会从C类里面去找;

    2.那么如果A类定义的时候是新式类,那么在继承后D调用x()方法的时候顺序是怎样的呢?

      首先是从B类里面去找x()方法,如果B类中没有,就会从C类里面去找,如果C类中也没有x()方法,最后才会从A类里面去找;

    画个比较丑的图更直观的说明一下:






















  • 相关阅读:
    Mysql里的isnull(),ifnull(),nullif
    懒加载数据
    MyEclipse编辑xml文件没有提示
    java-五子棋游戏源码
    Java版打字练习游戏源码
    Wpf实现图片自动轮播自定义控件
    WP8.1开发:自定义控件
    简单的UIButton按钮动画效果ios源码下载
    自定义的一款选项卡ios源码
    Aisen微博应用源码完整版
  • 原文地址:https://www.cnblogs.com/mululu/p/9106964.html
Copyright © 2011-2022 走看看