python 多重继承 深度优先还是广度优先
我们常说,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 多重继承 深度优先还是广度优先的更多相关文章
- Python学习笔记8-类的继承 、深度优先、广度优先
Python 类声明 语法: class 类名: 类体 例: #--encoding:utf-8-- # class AddressBookEntity: myVersion=0.1 def __in ...
- python 实现图的深度优先和广度优先搜索
在介绍 python 实现图的深度优先和广度优先搜索前,我们先来了解下什么是"图". 1 一些定义 顶点 顶点(也称为"节点")是图的基本部分.它可以有一个名称 ...
- 第三百三十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—深度优先与广度优先原理
第三百三十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—深度优先与广度优先原理 网站树形结构 深度优先 是从左到右深度进行爬取的,以深度为准则从左到右的执行(递归方式实现)Scrapy默认 ...
- python 递归深度优先搜索与广度优先搜索算法模拟实现
一.递归原理小案例分析 (1)# 概述 递归:即一个函数调用了自身,即实现了递归 凡是循环能做到的事,递归一般都能做到! (2)# 写递归的过程 1.写出临界条件2.找出这一次和上一次关系3.假设当前 ...
- python数据结构之图深度优先和广度优先实例详解
本文实例讲述了python数据结构之图深度优先和广度优先用法.分享给大家供大家参考.具体如下: 首先有一个概念:回溯 回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标.但当探索到 ...
- Python爬虫从入门到放弃(十)之 关于深度优先和广度优先
网站的树结构 深度优先算法和实现 广度优先算法和实现 网站的树结构 通过伯乐在线网站为例子: 并且我们通过访问伯乐在线也是可以发现,我们从任何一个子页面其实都是可以返回到首页,所以当我们爬取页面的数据 ...
- 十七 Python分布式爬虫打造搜索引擎Scrapy精讲—深度优先与广度优先原理
网站树形结构 深度优先 是从左到右深度进行爬取的,以深度为准则从左到右的执行(递归方式实现)Scrapy默认是深度优先的 广度优先 是以层级来执行的,(列队方式实现)
- Python之 爬虫(十二)关于深度优先和广度优先
网站的树结构 深度优先算法和实现 广度优先算法和实现 网站的树结构 通过伯乐在线网站为例子: 并且我们通过访问伯乐在线也是可以发现,我们从任何一个子页面其实都是可以返回到首页,所以当我们爬取页面的数据 ...
- 图的深度优先和广度优先遍历(图以邻接表表示,由C++面向对象实现)
学习了图的深度优先和广度优先遍历,发现不管是教材还是网上,大都为C语言函数式实现,为了加深理解,我以C++面向对象的方式把图的深度优先和广度优先遍历重写了一遍. 废话不多说,直接上代码: #inclu ...
随机推荐
- HBase数据模型和读写原理
Hbase的数据模型和读写原理: HBase是一个开源可伸缩的分布式数据库,他根据Google Bigtable数据模型构建在hadoop的hdfs存储系统之上. HBase是一个稀疏.多维度 ...
- SPSS中文版安装
我这里安装的是64位的 双击安装包 选择您的安装目录 在这里等几分钟 重要!安装完毕后将图中选项勾去掉! 这个时候输入一下授权码 9DNCAF2O3QVDV7FBIO696OO6GWLNXZPPRYT ...
- es6基础(3)-正则扩展
//正则扩展 { let regex=new RegExp('xyz','i'); let regex2=new RegExp(/xyz/i); console.log(regex.test('xyz ...
- win7禁用Adnimistrator账号登录
开始 运行 输入 lusrmgr.msc 回车. 双击 用户,双击Administrator ,在 账户已禁用 前面打上勾即可.然后确定.
- CentOS 开发环境准备
由于公司开发都是用的CentOS,如果不是使用docker的时候,难免会需要自己安装各种软件(例如,Python,nodejs等),然后这些软件还需要大量的依赖软件. 例如gcc等. 我们不需要一个一 ...
- Linux 安装redis 基本配置 发布订阅,安全配置,持久化 rdb ,aof
redis redis相关配置1.yum 源码 rpm yum 快速,间接,高效,解决依赖关系,(自动安装到某个路径,不可控),通过yum安装的软件查询命令 rpm -ql nginx yum源 ...
- jmeter本机内存溢出如何修改?
websocket连接过程中内存溢出,本机配置的内存最大和最小设置的512: 一.后台返回 二.结果树返回: Thread Name: 线程组 1-9Sample Start: 2017-09-11 ...
- 安装Anaconda3进行python版本管理
1.下载Anaconda3,我选择了python3的64位版本 2.windows安装,选择加入了系统目录 3.进入命令行进行版本安装 // 安装一个指定版本conda create --name p ...
- 1. 怎么设置可以使得虚拟机里面既可以访问主机也可以访问局域网而且是静态ip
方法1: Bridged方式(桥接): (1). 虚拟机网络适配器设置为桥接 (2). 主机设置静态ip (3). 虚拟机也设置静态ip且和宿主机在同一网段 Bridged方式: 在图1中Networ ...
- Linux——JDK配置
一.安装jdk-7u21-linux-x64.rpm文件 [root@centos6 local]# rpm –ivh jdk-7u21-linux-x64.rpm 二.防火墙开放8080端口 (在 ...