同福

Python子类调用父类构造函数的方法【20210729】

介绍

介绍

福哥发现在Python3里面调用父类的构造函数和Python2不一样了,直接使用super().__init__()行不通了!

后来福哥经过一番研究发现了可行的方案,分享给大家!

方法一

可以直接使用父类的名称调用父类的构造函数__init__(),这样比较直观,语法也很简单。

注意:使用父类的名称调用__init__()需要传递self参数进来。

示例

class Programmer:
    def __init__(self):
        print("Programmer: 福哥你在吗?")

    def getAge(self):

        return 20

class Fuge(Programmer):
    def __init__(self):
        Programmer.__init__(self)
        print("Fuge: 我在这里!(" + str(self.getAge()) + ")")

    def getAge(self):

        return 35

home/topic/2021/0730/17/aeaa5acbd3baef081b94f267075c9d25.png

方法二

还可以使用super函数调用父类的构造函数__init__(),语法差不多,就是不需要传递父类的参数了。

使用这个方法还可以溯源当前类的祖籍类链表,方法就是一层一层的调用super方法就好了。

注意:使用super调用__init__()是不需要传递self参数的。

示例

class Programmer:
    def __init__(self):
        print("Programmer: 福哥你在吗?")

    def getAge(self):

        return 20

class Fuge(Programmer):
    def __init__(self):
        super(Fuge, self).__init__()
        print("Fuge: 我在这里!(" + str(self.getAge()) + ")")

    def getAge(self):

        return 35

def test():
    my = Fuge()

home/topic/2021/0730/17/aeaa5acbd3baef081b94f267075c9d25.png

总结

今天福哥把Python调用父类的构造函数的方法教给了童鞋们,大家在设计复杂的模块功能的时候可以充分利用这个去分散功能。