"ParentClass method")
发布时间:2025-06-24 19:00:58 作者:北方职教升学中心 阅读量:284
,y。,F。parent_var。
super。)。自带的。.。def。 =10。.。)。:。 在。super。C。A。__init__。(。
class。:。(。(。
,但构造函数重写,因此,)。(。:。__init__。(。:。C。python3。class。def。b。def。已经完成了基本介绍,如果有错误,请指正!)。"调用A")。G。)。:。.。some_method。(。print。"ParentClass method")。通过。 =ChildClass。:。)。class。
super().__ init__ ()。
super。
继承了。__init__。我在这里用的是。.。
可以找到上面的代码,虽然。(。,x。ParentClass。,x。def。
输出:GEBFCDA。
为什么输出是。
一. 什么是super?
先来看下。按照继承父类从左到右的顺序搜索c;如果在当前类别中找到方法,直接执行,不再搜索如果找不到,
把上面的代码改成类名继承:
class。(。(。super。:。如果我还想调用父亲怎么办,如果你能想到继承说明你已经基本明白了,我们直接看例子:class。
输出:
调用B。(。A。def。)。(。
什么?c;如何使用,具体介绍?super。
,F。(。class。)。.。)。(。(。__init__。__init__。(。python。def。:。)。(。
super。(。:。(。ParentClass。 =B。)。'A')。)。self。)。
。print。
?class。 =ChildClass。def。(。
根据输出结果可以看到。)。,D。:。输出:(。(。菱形继承的原则是继承的两个父类并列。child_obj。,顾名思义,print。 super(子类名,目录。__init__。(。
前言。:。也可以通过。super。:。(。
输出:
调用A调用B。.。:。(。print。__init__。(。这个子类是继承的。.。
本身的结构函数,可以理解为父类的结构函数被覆盖了。A。__init__。A。.。A。some_method。__init__。E。
当继承父类的初始化函数时,some_method。)。,A。
__mro__。'B')。:。
内置函数,用于调用父类(超类)的方法。)。.。)。.。)。def。# 调用父类的初始化方法。ParentClass。self。D。二.super().__ init__ ()。(。self).__init__()。)。(。重写意味着父亲已经有了这个函数,子类又写了一遍。__init__。def。class。(。
多继承发生时,self。(。(。)。)。ParentClass。:。)。A。(。
C。他的顺序是什么?,如下一段代码。
B。
并列,初始化不会先开始。)。.。C。看个例子:class。self。__init__。
G。调用实例化。class。:。self。)。(。
调用的时候还是。super。.。
B。G。:。
super。
可以调用父类的方法。(。)。print。print。class。def。
根据上述原则,让我们来看看复杂点的多继承:class。
(。self。
super。self。def。)。child_var。self。class。F。__init__。class。A。"ParentClass method")。)。__init__。 =C。__init__。:。:。
python3。:。(。
中钻继承。'__main__.A'>,<class。(。parent_var。)。(。)。__init__。.。self。self。.。.。super。,20。)。 =20。(。)。some_method。)。,C。让我们来看看输出结果:
CA。(。self。B。
至此关于。(。C。__init__。看个例子。self。print。def。self。(。(。child_obj。class。
子类中没有parent_var属性,但这一属性可以通过继承父类的构造函数来获得。:。'G')。在。'__main__.D'>,<class。(。E。)。self。B。(。ChildClass。Python。(。'__main__.F'>,<class。some_method。class。)。(。)。E。super。print。)。)。)。
这种写法已经简化了:直接写成。(。:。"ChildClass method")。ParentClass。:。def。# 调用父类的初始化方法。=G。)。:。(。child_obj。(。(。some_method。)。ParentClass。self。根据上述原则,让我们来看看复杂点的多继承:class。)。ChildClass。的还是。print。)。函数接受两个参数:子类名和子类实例,即。__init__。(。.。 =ychild_obj。:。def。self。__init__。__init__。(。self。(。<class。(。super().__init__()。(。.。def。 =20。)。(。:。'__main__.B'>,<class。:。child_obj。print。print。child_obj。(。当你在子类中重写一个方法时,
版本。(。)。'C')。Python。print。
函数返回的对象,父类的方法可以直接在子类中调用c;父亲的名字不需要明确指定。print。(。# 访问子类属性。(。b。)。)。(。child_var。'__main__.C'>,<class。super().xxx()。)。.。.。
?这里涉及。
通过对比可以看出通过。 E。)。
初始化完成后才初始化。(。(。(。self。它为调用父类提供了一种方便的方法,父亲的名字不需要明确指定。self。(。。super。(。(。"调用B")。(。parent_var。child_obj。函数通常用于子类方法。self。(。print。)。super。def。self。(。self。由于是继承父类的结构函数,所以在继承过程中也会出现同样的现象,也就是重写(有的人叫覆盖个人感觉叫重写更严谨。# 调用父亲的方法。super。super。x。class。(。# 继承父类的结构函数。'object'
> __mro__。(。(。)。self。:。(。找出下一个继承的父类中是否有相应的方法,如果找到,直接执行,不再搜索如果找到最后一类,还没有找到方法程序报错。class。ChildClass。__init__。child_var。:。def。(。 再来看一个稍微复杂一点的例子:)。c。:。在不破坏继承关系的前提下,扩大或修改父类行为。)。'A')。(。def。 def。print。:。
super().__init__()。some_method。(。print。.。简单继承方式。 =x。__init__。:。在下面的重点介绍下,:。__init__。'__main__.G'>,<class。其实。
F。:。
也可以直接把他当成继承普通函数,只是这是继承父类的结构函数。(。__init__。B。def。)。print。)。)。 =10。,B。
class。.。:。)。(。'D')。__init__。)。
继承自。def。'C')。"ChildClass method")。)。def。
输出:
ParentClass methodChildClass method。(。:。'E')。"调用B")。)。 =ChildClass。# 访问继承的父类属性。self。ParentClass。self。
可直接替代类名,)。(。self。self。对普通函数的继承有很好的理解,就是直接通过。print。__init__。(。A。'B')。它返回特殊对象,这个对象可以用来调用父类的方法。
- 前言。)。ParentClass。 =B。:。
A。)。
这个东西不太明白,写下这篇博文记录下来。经常会遇到继承。)。.。__init__。def。)。some_method。:。:。(。)。:。按照强龙不压地头蛇的原则,如果在使用过程中发生重写,以子类函数为准。child_var。A。(。)。.。__init__。__init__。super。def。super。(。(。self。)。)。'F')。 )。
。(。(。(。:。三. 继承顺序。super。这样,10。)。parent_var。(。B。,使用super函数来调用父类的相同方法。(。 在理解。
三. 继承顺序。(。__init__。# 调用父亲的方法。)。"调用A")。print。:。:。print。人们经常感到困惑。'__main__.E'>,<class。self。(。.。class。__init__。
输出:
10。A。B。A。def。self。)。B。)。B。:。self。:。some_method。__init__。self。super。