Python如何继承父类__init__方法

如果在子类需要父类的构造方法就需要显示地调用父类的构造方法,或者不重写的构造方法。

类型1:如果子类没有重写__init__,子类会自动调用__init__

class F:
    def __init__(self, name):
        self.name = name
        print('name:'+self.name)
    def getName(self):
        return 'F:' + self.name
class S(F):
    def getName(self):
        return 'S:' + self.name
if __name__ == '__main__':
    s = S('sun')
    print(s.getName())

运行结果:
在这里插入图片描述

类型2:如果重写__init__,实例化子类,就不会调用父类的__init__方法

class F:
    def __init__(self, name):
        self.name = name
        print('name:'+self.name)
    def getName(self):
        return 'F:' + self.name
class S(F):
    def __init__(self, name):
        self.name = name
        print('Sname:'+self.name)
    def getName(self):
        return 'S:' + self.name
if __name__ == '__main__':
    s = S('sun')
    print(s.getName())

运行结果:
在这里插入图片描述

类型3:子类重写__init__,就要继承父类的构造方法,可以使用super关键字

class F:
    def __init__(self, name):
        self.name = name
        print('Fname:'+self.name)
    def getName(self):
        return 'F:' + self.name
class S(F):
    def __init__(self, name):
        super(S,self).__init__(name)
        self.name = name
        print('Sname:'+self.name)
    def getName(self):
        return 'S:' + self.name
if __name__ == '__main__':
    s = S('sun')
    print(s.getName())

运行结果:
Python如何继承父类__init__方法_第1张图片

你可能感兴趣的:(Python学习,python,类)