关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

python 子类调用父类的构造函数

发布时间:2021-04-14 00:36:26

  当子类继承父类后,需要调用父类的方法和属性时,需要调用父类的初始化函数。

class A(object):    def __init__(self):
        self.nameaa = 'aa'
    def funca(self):        print('function a %s' % self.nameaa)        class B(A):    def __init__(self):
        self.namebb = 'bb'
   def funcb(self):        print('function b %s' % self.namebb)
        
b = B()print(b.namebb)
b.funcb()print(b.nameaa)
b.funca()

  在子类中重写了构造函数,但新的构造函数没有初始化父类,当没有初始化父类的构造函数时,就会报错。

  (1)调用超类的构造方法

复制代码
class A(object):    def __init__(self):
        self.nameaa = 'aa'
    def funca(self):        print('function a %s' % self.nameaa)        
class B(A):    def __init__(self):
        self.namebb = 'bb'
        A.__init__(self)       #添加
    def funcb(self):        print('function b %s' % self.namebb)
        
b = B()print(b.namebb)
b.funcb()print(b.nameaa)
b.funca()
复制代码

  (2)使用super函数

复制代码
class A(object):    def __init__(self):
        self.nameaa = 'aa'
    def funca(self):        print('function a %s' % self.nameaa)        
class B(A):    def __init__(self):
        self.namebb = 'bb'
        super(B,self).__init__()    def funcb(self):        print('function b %s' % self.namebb)
        
b = B()print(b.namebb)
b.funcb()print(b.nameaa)
b.funca()
复制代码

  super函数返回一个super对象,解析过程自动查找所有的父类和父类的父类,当前类和对象可以作为super函数的参数使用,调用函数返回的方法是超类的方法。使用super函数如果子类继承多个父类只许一次继承,使用一次super函数即可。

  如果没有重写子类的构造函数,是可以直接使用父类的属性和方法的。

复制代码
class A(object):    def __init__(self):
        self.nameaa = 'aa'
    def funca(self):        print('function a %s' % self.nameaa)        
class C(A):    passc = C()
c.funca()print(c.nameaa)
复制代码

 



/template/Home/Zkeys/PC/Static