博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python学习笔记(二十六)经典类和新式类的区别
阅读量:4635 次
发布时间:2019-06-09

本文共 907 字,大约阅读时间需要 3 分钟。

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

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

 

 

 

转载于:https://www.cnblogs.com/mululu/p/9106964.html

你可能感兴趣的文章
计算机中整数加法满足结合律吗
查看>>
Unix基本系统数据类型和stat结构体
查看>>
Java JVM、JNI、Native Function Interface、Create New Process Native Function API Analysis
查看>>
FileStream功能被禁用
查看>>
MVC 中Simditor上传本地图片
查看>>
[RxJS] Build your own RxJS
查看>>
[Grid Layout] Place grid items on a grid using grid-column and grid-row
查看>>
[RxJS] Implement pause and resume feature correctly through RxJS
查看>>
[Docker] Docker Client in Action
查看>>
日期时间工具类
查看>>
[leetcod] Clone Graph
查看>>
Remove Duplicates from Sorted Array II leetcode java
查看>>
CSS实现树形结构 + js加载数据
查看>>
P1334 瑞瑞的木板
查看>>
eclipse中folder、source folder和package的区别
查看>>
Eclipse高级使用技巧
查看>>
第2章 数字之魅——快速寻找满足条件的两个数
查看>>
study of javaserver faces lifecycle
查看>>
转 单实例的写法
查看>>
【BZOJ4254】Aerial Tramway 树形DP
查看>>