"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')。:。

    二.super().__ init__ ()。(。self).__init__()。)。(。重写意味着父亲已经有了这个函数,子类又写了一遍。__init__。def。class。(。内置函数,用于调用父类(超类)的方法。)。.。)。.。)。def。# 调用父类的初始化方法。ParentClass。self。D。

      多继承发生时,self。(。(。)。)。ParentClass。:。)。A。(。C。他的顺序是什么?,如下一段代码。B。并列,初始化不会先开始。)。.。C。看个例子:

    class。self。__init__。G。调用实例化。class。:。self。)。(。调用的时候还是。super。.。B。G。:。super。
    根据上述原则,让我们来看看复杂点的多继承:

    class。

    (。self。可以调用父类的方法。(。)。print。print。class。def。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。

    看个例子。self。print。def。self。(。(。child_obj。class。至此关于。(。C。__init__。

    子类中没有parent_var属性,但这一属性可以通过继承父类的构造函数来获得。:。'G')。在。'__main__.D'>,<class。(。E。)。self。B。(。ChildClass。Python。(。'__main__.F'>,<class。some_method。class。)。(。)。E。super。print。)。)。)。super().__init__()。(。.。def。 =20。)。(。:。'__main__.B'>,<class。:。child_obj。print。print。child_obj。(。当你在子类中重写一个方法时,版本。(。)。'C')。Python。print。函数返回的对象,父类的方法࿰可以直接在子类中调用c;父亲的名字不需要明确指定。print。(。# 访问子类属性。(。b。)。)。(。child_var。'__main__.C'>,<class。这种写法已经简化了:直接写成。(。:。"ChildClass method")。ParentClass。:。def。# 调用父类的初始化方法。=G。)。:。(。child_obj。(。(。some_method。)。ParentClass。self。根据上述原则,让我们来看看复杂点的多继承:class。)。ChildClass。的还是。print。)。函数接受两个参数:子类名和子类实例,即。__init__。(。.。 =ychild_obj。:。def。self。__init__。__init__。(。self。(。<class。(。super().xxx()。)。.。.。?这里涉及。

      通过对比可以看出通过。 E。)。初始化完成后才初始化。(。(。(。self。它为调用父类提供了一种方便的方法,父亲的名字不需要明确指定。self。(。。super。(。(。"调用B")。(。parent_var。child_obj。函数通常用于子类方法。self。(。print。)。super。def。self。(。self。由于是继承父类的结构函数,所以在继承过程中也会出现同样的现象,也就是重写(有的人叫覆盖󿀌个人感觉叫重写更严谨。# 调用父亲的方法。super。super。x。class。(。# 继承父类的结构函数。'object'

    >)。c。:。在不破坏继承关系的前提下,扩大或修改父类行为。)。'A')。(。def。 def。print。:。super().__init__()。some_method。(。print。.。简单继承方式。 =x。__init__。:。在下面的重点介绍下,:。__init__。'__main__.G'>,<class。其实。

    __mro__。(。(。)。self。:。(。找出下一个继承的父类中是否有相应的方法,如果找到,直接执行,不再搜索�如果找到最后一类,还没有找到方法󿀌程序报错。class。ChildClass。__init__。child_var。:。def。(。F。:。B。def。)。print。)。)。 =10。,B。

    再来看一个稍微复杂一点的例子:

    class。.。:。)。(。'D')。__init__。)。继承自。def。'C')。"ChildClass method")。)。def。也可以直接把他当成继承普通函数,只是这是继承父类的结构函数。(。__init__。

    输出:

    ParentClass methodChildClass method。(。:。'E')。"调用B")。)。 =ChildClass。# 访问继承的父类属性。self。ParentClass。self。
    • 前言。)。ParentClass。 =B。:。可直接替代类名,)。(。self。self。对普通函数的继承有很好的理解,就是直接通过。print。__init__。(。A。'B')。它返回特殊对象,这个对象可以用来调用父类的方法。A。)。A。(。)。.。__init__。__init__。super。def。super。(。(。self。)。)。'F')。 )。。(。(。(。:。
    • 三. 继承顺序。super。这样,10。)。parent_var。(。B。,使用super函数来调用父类的相同方法。(。

        在理解。这个东西󿀌不太明白,写下这篇博文记录下来。经常会遇到继承。)。.。__init__。def。)。some_method。:。:。(。)。:。按照强龙不压地头蛇的原则,如果在使用过程中发生重写,以子类函数为准。child_var。

    • 一. 什么是super?
    • 二.super().__ init__ ()。g。)。self。print。"ParentClass method")。20。查看继承顺序:print。

      三. 继承顺序。(。__init__。# 调用父亲的方法。)。"调用A")。print。:。:。print。人们经常感到困惑。'__main__.E'>,<class。self。(。.。class。__init__。

    输出:

    10。A。B。A。def。self。)。B。)。B。:。self。:。some_method。__init__。self。super。