我们常说,python2 是深度优先,python3 是广度优先,

其实具体来说是 python2.2 及其以前是深度优先 python2.3及其以后就是广度优先了

python官网

讲解1

以及super子类调用父类的讲解

super详解

有这样一种需求:

一个类继承多个父类,同时这些类都有相同的方法名,但是具有不同的方法体,而且,子类需要调用所有父类的该方法

class Base:
def vcr(self):
pass class A(Base):
def vcr(self):
print("A") class B(Base):
def vcr(self):
print("B") class C(Base):
def vcr(self):
print("C") class D(Base):
def vcr(self):
print("D") class Z(A, B, C, D):
def vcr(self):
super(Z, self).vcr() # 根据类的多重继承,在A类中就有vcr方法,所以就会停止下来,不在会继续搜索
super(A, self).vcr() # 指定搜索的起始位置A,根据下面的列表得到会从A的下一个类开始运行,即B,调用完B的vcr方法之后,就会停下来
super(B, self).vcr() # 再次指定其实搜索位置B,从B后面的下一个类开始搜索,即 C,,调用完C的vcr方法之后,就会停下来
super(C, self).vcr() # 再次指定其实搜索位置C,从B后面的下一个类开始搜索,即 D,,调用完D的vcr方法之后,就会停下来
print("Z") z = Z()
z.vcr()
# A
# B
# C
# D
print(Z.mro()) # Z 的搜索路径
# [<class '__main__.Z'>, <class '__main__.A'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.D'>, <class '__main__.Base'>, <class 'object'>]
# 可以这么理解:
# super(Z,self).somemethod()
# 第二个参数可以的到所有的父类的排列顺序
# 第一个参数是指定开始搜索的父类位置,从该父类的下一个类开始搜索

python 多重继承 深度优先还是广度优先的更多相关文章

  1. Python学习笔记8-类的继承 、深度优先、广度优先

    Python 类声明 语法: class 类名: 类体 例: #--encoding:utf-8-- # class AddressBookEntity: myVersion=0.1 def __in ...

  2. python 实现图的深度优先和广度优先搜索

    在介绍 python 实现图的深度优先和广度优先搜索前,我们先来了解下什么是"图". 1 一些定义 顶点 顶点(也称为"节点")是图的基本部分.它可以有一个名称 ...

  3. 第三百三十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—深度优先与广度优先原理

    第三百三十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—深度优先与广度优先原理 网站树形结构 深度优先 是从左到右深度进行爬取的,以深度为准则从左到右的执行(递归方式实现)Scrapy默认 ...

  4. python 递归深度优先搜索与广度优先搜索算法模拟实现

    一.递归原理小案例分析 (1)# 概述 递归:即一个函数调用了自身,即实现了递归 凡是循环能做到的事,递归一般都能做到! (2)# 写递归的过程 1.写出临界条件2.找出这一次和上一次关系3.假设当前 ...

  5. python数据结构之图深度优先和广度优先实例详解

    本文实例讲述了python数据结构之图深度优先和广度优先用法.分享给大家供大家参考.具体如下: 首先有一个概念:回溯 回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标.但当探索到 ...

  6. Python爬虫从入门到放弃(十)之 关于深度优先和广度优先

    网站的树结构 深度优先算法和实现 广度优先算法和实现 网站的树结构 通过伯乐在线网站为例子: 并且我们通过访问伯乐在线也是可以发现,我们从任何一个子页面其实都是可以返回到首页,所以当我们爬取页面的数据 ...

  7. 十七 Python分布式爬虫打造搜索引擎Scrapy精讲—深度优先与广度优先原理

      网站树形结构 深度优先 是从左到右深度进行爬取的,以深度为准则从左到右的执行(递归方式实现)Scrapy默认是深度优先的   广度优先 是以层级来执行的,(列队方式实现)

  8. Python之 爬虫(十二)关于深度优先和广度优先

    网站的树结构 深度优先算法和实现 广度优先算法和实现 网站的树结构 通过伯乐在线网站为例子: 并且我们通过访问伯乐在线也是可以发现,我们从任何一个子页面其实都是可以返回到首页,所以当我们爬取页面的数据 ...

  9. 图的深度优先和广度优先遍历(图以邻接表表示,由C++面向对象实现)

    学习了图的深度优先和广度优先遍历,发现不管是教材还是网上,大都为C语言函数式实现,为了加深理解,我以C++面向对象的方式把图的深度优先和广度优先遍历重写了一遍. 废话不多说,直接上代码: #inclu ...

随机推荐

  1. springboot获取application.yml中的配置信息

    HelloController.java package com.springbootweb.demo.controller; import com.springbootweb.demo.entity ...

  2. 02-创建String对象

    创建一个String对象实在是太简单了,就是因为简单,所以有很多java程序员做了好几年的开发,也没有注意这些小细节问题 String字符串的本质就是char数据对象, 那么char[0]数组当中的一 ...

  3. windows gitbook pdf

    1.安装 nodejs 下载地址:https://nodejs.org/download/release/v6.9.2/node-v6.9.2-x64.msi 执行安装 配置环境变量:C:\Progr ...

  4. Koa快速入门教程(一)

    Koa 是由 Express 原班人马打造的,致力于成为一个更小.更富有表现力.更健壮的 Web 框架,采用了async和await的方式执行异步操作. Koa有v1.0与v2.0两个版本,随着nod ...

  5. studio2.3app签名打包安装失败,找不到签名证书。

    Androidstudio升级到2.3后,打包时和之前不一样了. 如果只选择V2,是未签名的.所以要把V1和V2都打勾.

  6. angularjs中ng-repeat插入图片

    <tr ng-repeat="item in datas" ng-module="datas"> <td> <img class ...

  7. nvm-windows安装

    linux上的nvm太好用了,windows也出了,不过需要手动下载安装 地址: https://github.com/coreybutler/nvm-windows/releases 博主安装的是 ...

  8. js语法规则 ---console.log ---- prompt ----基本类型 ---parseInt

    在页面中可以在body里面加入type=”text/javascript” 例如: <script type="text/javascript"> </scrip ...

  9. day5--装饰器函数的信息打印,迭代器,生成器,列表推导式,内置函数

    本文档主要内容: 一 装饰器函数的信息打印 二 迭代器 三 生成器 四 生成器表达式和列表推导式 五 内置函数 一 装饰器函数的信息打印 一个函数一旦被装饰器给装饰后,这个函数的信息使用原来的命令打印 ...

  10. Java课程作业之动手动脑(六)

    1.使用Files. walkFileTree()找出指定文件夹下所有大于指定大小(比如1M)的文件. import java.io.IOException; import java.nio.file ...