python3 多继承搜索__init__方法的两种策略

继承情形一:


测试代码如下:

class A(object):def __init__(self):print('A')class B(object):def __init__(self):print('B')class C(A):def __init__(self):print('C')class D(B): def __init__(self):print('D')class E(C, D):pass

执行当前代码 x=E(),打印输出为:C;说明在E类中不存在init方法的时候,先找C中的init方法;

修改代码,去掉C类中的init方法,修改后,的代码如下

class A(object):def __init__(self):print('A')class B(object):def __init__(self):print('B')class C(A):passclass D(B): def __init__(self):print('D')class E(C, D):pass

再次执行当前代码 x=E(),输出结果为A,然后删除掉A中的init方法,修改后的代码如下:

class A(object):passclass B(object):def __init__(self):print('B')class C(A):passclass D(B): def __init__(self):print('D')class E(C, D):pass

执行x=E();输出结果为D,然后删除D类中的init方法后,代码如下:

class A(object):passclass B(object):def __init__(self):print('B')class C(A):passclass D(B): passclass E(C, D):pass

运行 x =E();输出结果为B。

可见在这种情形下,python3搜索__init__方法的顺序是 E->C->A->D->B


继承情形二:


在这种集成情况下,类的初始化情况如下:

class A(object):def __init__(self):print('A')class C(A):def __init__(self):print('C')class D(A): def __init__(self):print('D')class E(C, D):pass

运行 x = E();输出结果为C,去掉类C中的init方法,代码结构如下:

class A(object):def __init__(self):print('A')class C(A):passclass D(A): def __init__(self):print('D')class E(C, D):pass

运行 x=E();输出结果为D,去掉类D中的init方法,代码结构如下:

class A(object):def __init__(self):print('A')class C(A):passclass D(A): passclass E(C, D):pass

输出结果为A,可见在这种情况下python3搜索__init__方法的顺序是 E->C->D->A


总结:在两种不同的继承结构下,python3使用了不同的init方法的搜索策略。需要注意起来!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity Shader 屏幕后效果——Bloom外发光

Bloom的原理很简单,主要是提取渲染图像中的亮部区域,并对亮部区域进行模糊处理,再与原始图像混合而成。 一般对亮部进行模糊处理的部分采用高斯模糊,关于高斯模糊,详见之前的另一篇博客: https://www.cnblo…

不要假装努力,结果不会陪你演戏!

转载于:https://www.cnblogs.com/strive-19970713/p/11171205.html

机器学习基石-作业二-第10题分析

题目如上图所示,答案是:;在网上看到的答案中有一个很好的解释就是说在一个n纬的欧几里德空间里,分别按照参数做一个垂直于每个轴的超平面,这些超平面能够打散这么多个点。首先我承认这个事实,具体的证明还没…

机器学习基石作业二中的DECISION_STUMP实现

概要:在林老的题目描述中,DECISION_STUMP(其实就是“决策桩”,也就是只有一层的决策树)。题目中提到了的选去是把属性(一维的)按照从小到大的顺序排列以后取两个挨着的值的平均值,网…

【MM系列】SAP 关于更改物料的价格控制类型

公众号:SAP Technical本文作者:matinal原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:【MM系列】SAP 关于更改物料的价格控制类型前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适…

机器学习基石-作业三-第2题分析以及通过H证明EIN的讨论

题目: 这是机器学习基石作业三种的第二小题,额,在网上看了很多解答(解答也不多)感觉都没有说清楚为什么,所以励志清楚滴解决一下这个问题,经过努力,自认为得到了详细的解答&#xff…

Nginx的平滑升级记录---适用于编译安装的Nginx

一、查看自己的Nginx的版本号 [rootlocalhost sbin]# cd /usr/local/nginx/sbin/ [rootlocalhost sbin]# ls nginx [rootlocalhost sbin]# ./nginx -V nginx version: nginx/1.15.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) configure arguments: 二、确定自己要…

02(c)多元无约束优化问题-牛顿法

此部分内容接《02(a)多元无约束优化问题》! 第二类:牛顿法(Newton method) \[f({{\mathbf{x}}_{k}}\mathbf{\delta })\text{ }\approx \text{ }f({{\mathbf{x}}_{k}}){{\nabla }^{T}}f({{\mathbf{x}}_{k}})\cdot \mathbf{\delta }\frac{1}{2}{{\mathbf{\…

推荐系统浅浅的例子

对于推荐系统,有很多的很强大的算法。这里作为练习,只介绍基本的协同过滤算法(userbased)和FM(通过梯度下降的角度,还可以通过交替优化的角度来看)。 这里的例子是在七月算法的视频中看的&#…

TPL Dataflow .Net 数据流组件,了解一下?

回顾上文 作为单体程序,依赖的第三方服务虽不多,但是2C的程序还是有不少内容可讲; 作为一个常规互联网系统,无外乎就是接受请求、处理请求,输出响应。 由于业务渐渐增长,数据处理的过程会越来越复杂和冗长&…

推荐系统实例

协同过滤与隐语义模型 在机器学习问题中,我们见到的数据集通常是如下的格式: input target ... ... ,一个输入向量的集合以及对应的数据集合,就是我们想要去预测的值。 对于…

【转】深入理解JavaScript闭包(closure)

文章来源:http://www.felixwoo.com/archives/247 最近在网上查阅了不少Javascript闭包(closure)相关的资料,写的大多是非常的学术和专业。对于初学者来说别说理解闭包了,就连文字叙述都很难看懂。撰写此文的目的就是用最通俗的文字揭开Java…

从头开始建立神经网络翻译及扩展

目录翻译从头开始建立神经网络-简介导包和配置生成一个数据集实现用来展示决策边界的辅助函数Logistic Regression训练一个神经网络我们的神经网络如何进行预测学习神经网络的参数实现神经网络训练一个隐层有3个神经元的神经网络验证隐层神经元个数对神经网络的影响练习练习题解…

对比 C++ 和 Python,谈谈指针与引用

花下猫语:本文是学习群内 樱雨楼 小姐姐的投稿。之前已发布过她的一篇作品《当谈论迭代器时,我谈些什么?》,大受好评。本文依然是对比 C 与 Python,来探讨编程语言中极其重要的概念。祝大家读有所获,学有所…

《吴恩达深度学习》第一课第四周任意层的神经网络实现及BUG处理

目录一、实现1、吴恩达提供的工具函数sigmoidsigmoid求导relurelu求导2、实现代码导包和配置初始化参数前向运算计算损失后向运算更新参数组装模型3、问题及思考一、实现 1、吴恩达提供的工具函数 这几个函数这里只是展示一下,这是吴恩达写好的工具类,…

球形坐标和Cartesian 坐标的转换 spherical coordinate

spherical coordinate 和cartesian坐标的转换, 个人认为在控制camera的时候最为有用,比如CS中的操作方式, 鼠标负责方向的改变,其恰恰就是球形坐标的改变。而camera的位置改变就是cartesian的改变,所以这两者的转换就必…

【HANA系列】SAP HANA Studio出现Fetching Children...问题

公众号:SAP Technical本文作者:matinal原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:【ABAP系列】SAP HANA Studio出现"Fetching Children..."问题前言部分 大家可以关注我的公众号,公众号里的排版…

朴素Bayse新闻分类实践

目录1、信息增益(互信息)介绍(1)西瓜书中的信息增益[^1](2)PRML中的互信息[^2](3) 其实他们是一个东西2、朴素Bayse新闻分类[^3](1)常量及辅助函数&#xff0…