这篇文章主要介绍了Python中的super函数怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python中的super函数怎么用文章都会有所收获,下面我们一起来看看吧。经常有朋友问,学 Python 面向对象时,翻阅别人代码,会发现一个 super() 函数,那这个函数的作用到底是什么?super() 函数的用途如下,在子类中调用父类的方法,多用于类的继承关系。其语法格式如下所示:参数说明如下:type:类,可选参数object-or-type:对象或类,一般为 self,也是可选参数。返回值是代理对象。可以直接查询官方帮助手册:输出信息如下所示:对输出结果进行分析之后,可以得到如下结论:super 类是一个继承自 object 的类,super() 函数就是对该类的实例化;调用 super() 实例化之后,返回一个 super 对象;super() 参数有四种搭配,具体看上述输出;直接看一下单继承相关代码,其中使用类名去调用父类方法。上述代码在 B 类中增加了 funB 函数,并且去调用 A 类中的 funA 函数,此时输出的内容如下所示:如果将上述代码修改为 super() 函数调用父类方法,可以使用下述代码:上述代码与之前的运行结果一致,在单继承的层级结构中,super 可以直接引用父类,即在子类中不需要使用父类名调用父类方法,而使用代理对象(super 对象)去调用,这样的好处就是当父类名改变或继承关系发生改变时,我们不需要对调用进行反复修改。接下来看一下多继承情况下,super() 函数的实战场景。此时输出的结果是 AAA,可以看到 super 匹配到的数据是 A 类中的 run 函数,也就是最左侧类中的方法,下面修改一下各类中 run 函数的名称,使其存在差异。当一个类继承多个类时,如果第一个父类中没有提供该方法,当前类实例就会通过 __mro__ 属性进行向上搜索,如果到 object 类都没有检索到该方法,就会引发 AttributeError 异常。基于上述逻辑,我们可以扩展一下,使用 super() 函数中的参数。此时输出的结果是 CCC,该结果输出表示了使用 super 函数之后,可以使用 super(类,self) 指定以哪个类为起点检索父类中的方法,上述代码设置的 B,就表示从 B 开始检索,后续找到了 C 类,其中包含 run() 方法,所以输出 CCC。__mro__ 属性的说明。MRO 是 method resolution order,即方法解析顺序,其本质是继承父类方法免费云主机、域名时的顺序表。
在 Python 中可以使用内置属性 __mro__ 查看方法的搜索顺序,例如下述代码,重点查看输出部分内容。输出的结果如下所示:你可以修改一下继承顺序,然后得到不同的输出结果。在搜索方法的时候,是按照 __mro__ 的输出结果从左到右进行顺序查找的,逻辑如下:A. 找到方法,停止检索;
B. 没有找到,继续检索下一类;
C. 如果到最后都没有找到,程序报错。关于“Python中的super函数怎么用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Python中的super函数怎么用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注云技术行业资讯频道。
这篇文章主要介绍了jquery中hover函数的参数有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇jquery中hover函数的参数有哪些文章都会有所收获,下面我们一起来看看吧。 jquery中的hover函数有2个参数:1…