python中类的演变

【华为OD机试真题】6、数组去重和排序 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 题目描述 >给定一个乱序的数组,删除所有的重复元素,使得每个元素只出现一次,并且按照出现的次数从高到低进行排序,相同出现次数按照第一次出现顺序进行先后排序 阅读详情

python类的发展史

  • 经典类(python2.2以前):是一种没有继承的类,对象类型都是type类型,如果经典类被作为父类,子类调用父类的构造函数时会出错
# 1
import inspect
class D:
    pass
class E:
    pass
class B(D):
    pass
class C(E):
    pass
class A(B, C):
    pass
print(inspect.getmro(A))    #(<class '__main__.A'>, <class '__main__.B'>, <class '__main__.D'>, <class '__main__.C'>, <class '__main__.E'>, <class 'object'>)



# 2
import inspect
class D:
    pass
class C(D):
    pass
class B(D):
    pass
class A(B, C):
    pass
print(inspect.getmro(A))    #(<class '__main__.A'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.D'>, <class 'object'>)
  • 新式类(python2.2):为了类和内置的类型更加统一,引入新式类。新式类的每个类都继承于一个基类,可以是自定义的类或者其他类,默认是object,子类可以调用父类中的构造函数
# 1
class D:
    pass
class E:
    pass
class B(D):
    pass
class C(E):
    pass
class A(B, C):
    pass


# 2
class D:
    pass
class C(D):
    pass
class B(D):
    pass
class A(B, C):
    pass

'''
第一种:看起来正常,单实际上感觉到别扭,比如B继承D的f()方法,恰巧C中页实现了f()方法,在A中调用f()函数会选择使用C的,这种应该先从B和B的父类开始查找才是正确的顺序,称为单调性
第二种:菱形模式下BFS解决了DFS查找的顺问题,但是他也违背了单调性

'''
  • python2.3-2.7
    在这之前BFS算法存在很大的问题,从2.3开始新式类的MRO算法开始使用C3算法,C3算法解决了单调性问和之能继承无法重写的问题
  • 新式类一统江山(python3至今)
    C3算法解决的问题
    1、单调性问题
    2、不能重写的问题
    拓扑排序:
    对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序
    抽象模拟:
    首先找入读为0的点,只有一个A,把A拿出来,把A相关的边裁剪掉,在找到入读点为0的点,有两个(B、C),根据最左侧原则拿B,此时的顺序为AB,裁剪B相关的边。此时入读点为0的有D和C,取最左侧的D,此时的顺序为ABD。此时只有一个入读点为0的点C,裁剪掉C的边,此时的顺序为ABDC。剩下入读点为0的只有E,裁剪E相关的边,此时的顺序为ABDCE。最后一个入读点为0的是object,再去掉object的边,此时顺序为ABDCEobject
硬件工程师笔记——电子器件汇总大全 本文系统总结了14种常用电子器件的工作原理及功能应用,包括电阻、压敏电阻、电容、电感、二极管、三极管、MOS管、晶振、光耦、IGBT、继电器、磁珠、可控硅和线性稳压器。每种器件从结构原理、工作特性到典型应用进行全面解析,如电阻的限流分压、电容的储能滤波、三极管的放大开关等。重点阐述了各器件在电路设计中的关键作用,如IGBT的功率控制、继电器的隔离保护、LDO的电压稳定等,并提供了实际电路应用案例。文章还整理了硬件工程师笔试面试相关的知识点和真题资源,为电子工程师提供全面的技术参考。 阅读详情

相关推荐

STM32F4的sct文件理解

原文地址http://blog.sina.com.cn/s/blog_898f36590100ya2l.html ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...

weixin_34008805的博客 995

Day1_Python基础_2.Python历史

二、Python发展史 1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器。Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。 1991年,第一个Python编译器诞生。它是用C语言实现的,并能...

weixin_30270889的博客 190

值得苦练的100道Python经典练手题(全网最全,附详细答案,建议收藏)

这100道Python练习题涵盖了从基础语法到高级算法、从数据库操作到Web开发的各个方面,是备考数据库系统工程师的绝佳素材。建议按照章节顺序逐一练习,遇到难点可反复钻研,真正掌握每一道题背后的知识点。通过这些练习,不仅能提升Python编程能力,还能加深对数据库系统原理的理解,为考试和实际工作打下坚实基础。

yue_yun_的博客 9391

Python知识点(史上最全)

Python期末考试知识点(史上最全) python简介 Python是一种解释型语言 Python使用缩进对齐组织代码执行,所以没有缩进的代码,都会在载入时自动执行 数据类型:整形 int 无限大 浮点型 float 小数 复数 complex 由实数和虚数组成 Python中有6个标准的数据类型:

weixin_43474701的博客 17万+

保姆级教程:用Cesium的Primitive API实现火箭发射全流程动画(含代码避坑)

本文详细介绍了如何使用Cesium的Primitive API实现火箭发射全流程动画,包括模型控制、关节动画和精细时序管理。通过实战代码示例和性能优化技巧,帮助开发者高效构建高复杂度航天仿真系统,显著提升三维可视化效果与运行效率。

weixin_42565652的博客 213

【COMSOL】修改内置物理场方程 模拟水沸腾的蒸汽泡运动

在COMSOL中通过弱贡献(weak contribution)节点,可以向任何内置模型方程中添加约束。这里,以模拟水沸腾的蒸汽泡运动为例,来讲一讲当我们研究的方程与模块方程不一样时,应该怎么增加新的贡献项。

u012161192的博客 9011

【python】—— python的基本介绍并附安装教程

python的基本介绍以及安装教程

m0_56069910的博客 1万+

ros_control硬件接口实战:从零构建机器人控制框架

本文详细介绍了ros_control硬件接口在机器人控制框架中的核心作用与实践方法。通过解析硬件接口类型、实现标准接口、构建主控制循环及自定义功能扩展,帮助开发者从零构建高效的机器人控制系统,提升硬件与ROS的协同效率。

lstm7chronicler的博客 500

Python基础知识梳理

一、Python语言编程特征 二、基本数据类型(5个) 变量: 常量 类型转换问题 三、输入、输出函数 四、运算符 1、算法运算符 2、逻辑运算符 3、成员运算符 五、随机值获取、重命名 1、获取随机值 2、重命名 六、if语句 七、for循环 八、while循环 java→面向对象 ,c →面向过程;而python介于java和c 之间,既面向对象,又面向过程。 一、Python语言编程特征 Python源文件通常用.py作为扩展名 Python.........

心皿月的博客 1万+

SO_KEEPALIVE、TCP_KEEPIDLE、TCP_KEEPINTVL、保活包

是一个套接字选项,用于设置是否启用 keepalive 机制。在这段代码中没有涉及到选项的设置。当被设置为非零值时,表示启用 keepalive 机制。keepalive 是一种用于检测连接是否仍然有效的机制。通过定期发送一些特定的探测数据,可以检测到网络连接的异常中断或对端应用程序的崩溃退出。为了避免以上情况,可以启用 keepalive 机制,即使在无数据传输的情况下也定期发送探测数据。如果在一定时间内没有收到对端的响应,就认为连接已经失效,并进行相应的处理。要启用选项,需要使用函数。其中,fd。

m0_46376834的博客 4816

Oracle11g下载与安装(windows)

一、Oracle11g下载 二、安装准备 三、执行安装步骤 四、测试连接 附:Oracle11g服务说明

欢迎订阅我的“JAVA全栈开发笔记(全)”专栏,价格优惠,仅需19.9元。 2万+

Python入门基础知识总结

Python 是一种解释型、面向对象的语言

不想学习的打工人的博客 3万+

修改 Alist 密码时报错?看看这个坑怎么解决!

启动服务后,再修改密码”。以后再遇到类似问题,先检查服务是否正常运行,说不定就能少踩不少坑。如果还有其他 Alist 的问题,欢迎在评论区留言交流~

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1154

Python 中的新式类和经典类的区别?

1. 版本支持 / 写法差异# 在Python 2.x 中 如果你至今使用的还是 Python 2.x,那么你需要了解一下,在Python 2.x中存在着两种类:经典类和新式类。 什么是经典类? Copy Copy # 不继承自object class Ming: pass 什么是新式类? # 显示继承object class Ming(object): pass 在Python 3.x 中 如果你已经摒弃了Python 2.x,而已经完全投入了Python 3.x的怀抱,那你可.

weixin_39363245的博客 221

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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

1)、python在类中的定义在py2-3版本上是使用的有新式类和经典类两种情况,在新式类和经典类的定义中最主要的区别是在定义类的时候是否出现引用object;如:经典类:Class 类名:;而新式类定义的时候使用Class 类名(object): 2)、定义来源:在Python 2及以前的版本中,由任意内置类型派生出的类(只要一个内置类型位于类树的某个位置),都属于“新式类”,都会获得所有“新...

weixin_30325071的博客 82

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

python(十四)新式类和旧式类

这里有个重要概念呢在下面那个链接 http://blog.csdn.net/zimou5581/article/details/53053775 http://www.cnblogs.com/btchenguang/archive/2012/09/17/2689146.html 1、新式类都从object继承,经典类不需要。 2、新式类的MRO(method ...

aozhe0629的博客 97

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Python 高手编程系列三百三十二:Python 3 中新的元类语法

元类并不是新的 Python 特性,从 Python 2.2 版开始就一直都有。不过它的语法发生了重大变化,这种变化既不向后兼容也不向前兼容。新的语法如下所示:pass在 Python 2 中,其写法必须是这样的:= typePython 2 的 class 语句不接受关键字参数,所以 Python 3 定义元类的语法会在导入时引发 SyntaxError 异常。仍然可以编写在两个 Python 版本中都能运行的元类代码,但需要做一些额外工作。

2301_77888392的博客 967

Python 高手编程系列三十二:Python 3 中新的元类语法

元类并不是新的 Python 特性,从 Python 2.2 版开始就一直都有。不过它的语法发生了重大变化,这种变化既不向后兼容也不向前兼容。新的语法如下所示:pass在 Python 2 中,其写法必须是这样的:= typePython 2 的 class 语句不接受关键字参数,所以 Python 3 定义元类的语法会在导入时引发 SyntaxError 异常。仍然可以编写在两个 Python 版本中都能运行的元类代码,但需要做一些额外工作。

2301_77888392的博客 674

Python 中Python 为什么要继承 object 类

1.使用 Python 时, 遇到 class A 和 class A(object) 的写法,在 Py2 中是有概念上和功能上的区别的, 分别称为经典类(旧式类)old-style(classic-style) 与新式类的区别new-style。2.历史原因:.2.2以前的时候type和object还不统一. 在2.2统一以后到3之间, 要用class Foo(object)来申明新式类, 因为

dragon的专栏 7726

面向对象之经典类和新式类的区别

1.python2.x版本中类的定义称为经典类 2.在python3以后的版本中 因此,在以后声明类时,为了专业起见,最好直接写继承自object类.

weixin_45649763的博客 211

python多继承顺序_python多继承下的查找顺序-MRO原则演变与C3算法

在python历史版本中的演变史python2.2之前:MRO原则:只有经典类,遵循深度优先(从左到右)原则,存在的问题:在有重叠的多继承中,违背重写可用原则解决办法是再设计类的时候不要设计这样有问题的类python2.2版本:MRO原则:经典类:遵循深度优先(从左到右)原则引入新式类:在深度优先(从左到右)的算法基础之上, 优化了一部分,如果产生重复元素, 会保留最后一个,并且, 更尊重基类出现...

weixin_39731807的博客 182

python多继承下的查找顺序-MRO原则演变与C3算法

在python历史版本中的演变史 python2.2之前: MRO原则:   只有经典类,遵循深度优先(从左到右)原则,   存在的问题:在有重叠的多继承中,违背重写可用原则   解决办法是再设计类的时候不要设计这样有问题的类 python2.2版本: MRO原则:   经典类:遵循深度优先(从左到右)原则   引入新式类:在深度优先(从左到右)的算法基础之上, ...

weixin_30561177的博客 204

python中的新式类和旧式类

新式类默认继承object基类,在py3中所有类都是新式类,默认继承自object,这样就会形式闭环型多继承,所以使用广度优先遍历,更为合适。在py2(具体到2.2引进新旧概念)创建的类如果不显式继承object,那就是一个经典类,或旧式类,则多继承时采用深度优先遍历。为了保证统一性,在py2中使用多继承时,建议所有类都声明为新式类,或者全部默认为旧式类,这样就不会存在在py2中令人头疼的多继承搜...

qq_34935726的博客 312

python图标的演变_python图片处理类 PIL.Image模块(ios android icon图标自动生成处理)...

python图片处理类 PIL.Image模块(ios android icon图标自动生成处理) 0 114蓝瞳2019/6/19 13:57:50天津 和平从pyCharm提示下载PIL包a(http://www.pythonware.com/products/pil/)[http://www.pythonware.com/products/pil/]解压后,进入到目录下[pre]cd...

weixin_39940957的博客 183

python基础6_3-python2.x和python3.x下经典类和新式类的区别

经典类 # Author: Mr.Xue # 2019.10.29 class A: def __init__(self): print('__init__ A') 新式类 # Author: Mr.Xue # 2019.10.29 class A(object): def __init__(self): print('__init__ A') 如上所示,可以看到,经典类和新式...

73 208

Python从小白到高手实现系列三百七十三:Python 3 中新的元类语法

元类并不是新的Python 特性,从Python 2.2 版开始就一直都有。不过它的语法发生了重大变化,这种变化既不向后兼容也不向前兼容。新的语法如下所示:pass在Python 2 中,其写法必须是这样的:= typePython 2 的class 语句不接受关键字参数,所以Python 3 定义元类的语法会在导入时引发SyntaxError 异常。仍然可以编写在两个Python 版本中都能运行的元类代码,但需要做一些额外工作。

Mr_Roki的博客 941
上一篇: scrapy框架的实现(重写)
下一篇: jupyter notebooke 基本操作
Are you ready
博客等级 码龄8年 312粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值