我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python-浅谈Python2与Pyt

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python-浅谈Python2与Pyt

在Python2版本中编写类时,默认不加载object。那加载object和不加载object的区别在哪里呢?

 

一是拥有的高级特性不同。

继承object可以拥有许多高级特性,这些高级特性是编写框架和大型项目时需要使用的,十分有用。

链接https://blog.csdn.net/DeepOscar/article/details/80947155中有继承object与不继承object两者特性的详细的表格

 

二是调用顺序不同。

继承了object的是新式类,不继承 object 的是经典类,在 Python 2 里面新式类和经典类在多继承调用顺序方面会有差异。具体而言就是经典类按照深度优先进行调用,而新式类遵循广度优先进行调用。

比如下面的代码,深度优先调用就是先从D->B->A->C,而广度优先则是D->B->C->A。

具体的调用顺序按照mro列表顺序,可以使用mro()函数来查看mro列表。


class A(object):
    pass

class B(A):
    pass

class C(A):
    pass

class D(B,C):
    pass

d=D()
print(D.mro())

>>>[<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>]

顺便一提,查找父类的函数super()实际上和父类并没有关系,它返回的是MRO列表中的下一个类。因此在单线程的类中返回的就是上一级的父类而已。

 

一般而言,使用新式类对多继承的处理更符合逻辑,所以基于这两点提倡大家在创建类时继承object。

 

在Python3的版本中,新建的类默认加载了object(即使你不写object),即拥有object的特性和广度优先的调用特点。但是基于书写规范,建议大家还是在类的后面添加上object。

 

感谢

知乎作者邹冲:https://www.zhihu.com/question/19754936/answer/202650790

个人博客:https://blog.csdn.net/qq_41359051/article/details/83929471

个人博客:https://blog.csdn.net/DeepOscar/article/details/80947155

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python-浅谈Python2与Pyt

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python-浅谈Python2与Pyt

在Python2版本中编写类时,默认不加载object。那加载object和不加载object的区别在哪里呢? 一是拥有的高级特性不同。继承object可以拥有许多高级特性,这些高级特性是编写框架和大型项目时需要使用的,十分有用。链接htt
2023-01-31

Python基础:Python2与Pyt

Python 3计算出来如果是小数则直接显示小数,Python 2 计算出来如果是小数,则会把小数部分舍去,如果非要小数部分的话,需要如图加上float
2023-01-31

range()——python2与pyt

当你在不同python版本下使用 range() 时, 需要注意了我们先在原始IDE下分别码出来:python 2.>>> range(2, 19)[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 1
2023-01-31

【python】--python2与py

python3 和python 2 共存1.安装基础的系统包(因为我是在docker下启动的Linux, p_w_picpath中很多包没有装)yum install -y hostname  wget  tar passwd gcc lr
2023-01-31

浅谈fis3与postcss

Fis3构建工具Fis3的安装npm install -g fis3查看fis3fis3 –vfi3构建工具新建文件夹新建一个根目录进入根目录输入fis3 init指令初始化发布以及监听文件 指令:fis3 release –w –d ./
2023-01-31

浅谈python中的错误与异常

目录一、语法错误二、异常处理2.1、try-finally语句2.2、raise 语句2.3、assert 断言语句三、小结一、语法错误 异常:大多数的异常都不会被程序处理,都以错误信息的形式展现在这里 二、异常处理while True:t
2022-06-02

浅谈python迭代器

1、yield,将函数变为 generator (生成器) 例如:斐波那契数列def fib(num):a, b, c = 1, 0, 1    while a <= num:yield cb, c = c, b + ca += 1 for
2022-06-04

Python2与Python 3的对比

首发 http://www.everlose.info/notes/2013/10/31/difference-between-python3-to-python2/这篇文章总结了一些与Python2.6相比Python3.0中的新特性.P
2023-01-31

Python与协程从Python2—Py

协程,又称微线程、纤程,英文名Coroutine;用一句话说明什么是线程的话:协程是一种用户态的轻量级线程。Python对于协程的支持在python2中还比较简单,但是也有可以使用的第三方库,在python3中开始全面支持,也成为pytho
2023-01-31

浅谈python中的多态

目录一、多态二、多态性三、鸭子类型一、多态 多态是指一类事物有多种形态,比如动物类,可以有猫,狗,猪等等。(一个抽象类有多个子类,因而多态的概念依赖于继承)import abc class Animal(metaclass=abc.ABCM
2022-06-02

浅谈location.search与location.hash的问题

location.search和location.hash是JavaScript中URL对象的两个属性,用于获取和设置URL中的查询字符串和哈希值。1. location.search:- 用于获取URL中的查询字符串,即?后面的部分。-
2023-08-11

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录