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


     

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

    复制代码
    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):
        pass
    c = C()
    c.funca()
    print(c.nameaa)
    复制代码

     
    分类: python 之路
  • 相关阅读:
    VS2010 ReportViewer导出文件下载保存不能识别文件类型
    FpSpread添加表头(列名)标注
    win7 安装vs2010报错 Error code -939523550 for this component is not recognizedHi
    FpSpread添加标注
    RDLC报表上下标实现
    Zookeeper集群
    RabbitMQ整合springboot
    RabbitMQ 集群-镜像队列
    分布式文件系统FastDFS 分布式安装实战
    https 证书配置无效排查思路(过程)
  • 原文地址:https://www.cnblogs.com/xc1234/p/9129000.html
Copyright © 2020-2023  润新知