知识就是力量

当前位置:首页 > 技巧


python中丈夫类的调用方法_python中子类调用父类的初始化方法

2022-10-12

在Python中子类继承父类的过程中python 父类方法吗,如果子类没有重写父类的__init__()方法,子类会默认执行与父类相同的初始化方法。但是如果子类本身覆盖(也被覆盖)了父类的__init__()方法,那么就需要显式调用父类的初始化方法。有两种方法可以做到:

1:ParentClass.__init__(),父类名加init函数

2:super(type,cls).__init__()

专注于此python 父类方法吗,这也是Python在借鉴C++和JAVA的经验后,为提高语言的熟悉度而做出的努力。

super(type, cls) 本质上是超类的 3 个静态方法之一。

参考超类的定义:

类超(对象)

超级(类型)-> 未绑定的超级对象

super(type, obj) -> 绑定的超级对象;需要 isinstance(obj, type)

super(type, type2) -> 绑定的超级对象;需要 issubclass(type2, type)

调用协作超类方法的典型用法:

C(B)类:

定义方法(自我,arg):

超级(C,自我).meth(arg)

从图中可以看出,我们本质上是在调用第二个方法,其中第一个参数是开始寻找父类的起点(starting but not included),第二个参数是需要对应的第一个An满足isinstance(obj,type)的类型的实例,这个方法会返回第一个满足继承关系的类,搜索顺序遵循type.__mro__属性顺序(或许可以认为是广度优先遍历顺序)倒树)。

这种方法的好处是类之间构造函数调用的耦合关系是完全解耦的。如果更改当前Class,只需适当更改super的第一个参数即可。