未加星标

python中Super的用法

字体大小 | |
[开发(python) 所属分类 开发(python) | 发布者 店小二03 | 时间 2017 | 作者 红领巾 ] 0人收藏点击收藏
python中Super的用法

一点号Python热爱者2小时前

super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。总之前人留下的经验就是:保持一致性。要不全部用类名调用父类,要不就全部用 super,不要一半一半。

而当我们写派生类时想要在继承基类方法的基础上又想要增加自己的特性时,super就派上用场了,它让类既实现继承又实现了多态。

类的三大特点:封装、继承、多态

注意:super是一个类,在python2和python3中,用法有点区别。而这种变化其实也算是python从2到3的一种优化。

Python2中括号里面是有参数,参数为类名和self。


python中Super的用法

Python3中括号里没有参数。


python中Super的用法

还有一种方法来实现继承和重写的是通过基类名调用其方法的形式,而这种方法与super的的区别在多继承的时候体现的更明显。

例一:


python中Super的用法
python中Super的用法

上图例子中,D同时继承B,C,而B,C类的继承类都是A,这时候使用super的方法来继承时,A类中的方法中调用了一次,而使用类名的方法继承时,A被调用了两次。在这个例子中使用super方法就要好一点了。但也不代表我们就应该把所有继承类都使用super,接下来的例子我们可以看到类名继承的方法的用处。

例二:


python中Super的用法
python中Super的用法

如上图所示,C类同时继承A,B,使用super方法,类会自动继承只第一个基类的方法,而通过基类名调用其方法的形式就可以两个基类的方法都继承过来了。

所以通过上面的两个例子我们可以知道,两种对于方法重写和继承的方法并没有好坏之分,主要看继承的结构和个人的需求是怎样的。

有读者对本章不理解或者不懂之处,可以加群330637182咨询学习,让我们一起共同进步!

本文开发(python)相关术语:python基础教程 python多线程 web开发工程师 软件开发工程师 软件开发流程

主题: Python求是三大其实需求
分页:12
转载请注明
本文标题:python中Super的用法
本站链接:http://www.codesec.net/view/522322.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 开发(python) | 评论(0) | 阅读(25)