python学习笔记(二十六)经典类和新式类的区别
2024-10-20 05:45:58
首先了解一下什么是经典类,什么是新式类
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类里面去找;
画个比较丑的图更直观的说明一下:
最新文章
- POJ 3714 Raid
- TStringList 常用操作
- 一个超复杂的间接递归——C语言初学者代码中的常见错误与瑕疵(6)
- Mysql的一些小知识点
- CSS3 transform的skew属性值图文详解
- jquery json遍历和动态绑定事件
- 在IT学习中的“认识论”
- Coursera《machine learning》--(14)数据降维
- Dynamic Web Module 3.0 requires Java 1.6 or newer报错
- linux 配置 mail server
- 前端之bootstrap模态框
- 模块化jQuery的方法
- python基础学习(三)变量和类型
- mysql执行 sql文件遇到USING BTREE ) ENGINE=MyISAM DEFAULT CHARSET=utf8错误
- C# 的AOP实现
- winSockets编程(五)非阻塞模式(远程算数程序)
- 2018-04-11 activity周期
- Kubernetes1.91(K8s)安装部署过程(三)--创建高可用etcd集群
- php 删除目录
- 利用GitHub Pages和Hexo搭建个人博客