zoukankan      html  css  js  c++  java
  • 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 之路
  • 相关阅读:
    H3C-U200无法通过公网访问内网服务器
    mtr工具
    nginx网页跳转失败-302
    http协议
    接口 Swagger 部分Web API的隐藏
    接口 ApiController调用Controller 模拟Session 封装
    接口 Swagger 03 基于Token的身份认证
    电商 批量修改图片分辨率
    接口 Swagger 01 让Asp.net MVC项目显示API文档
    接口 Swagger 02 显示代码注释
  • 原文地址:https://www.cnblogs.com/xc1234/p/9129000.html
Copyright © 2011-2022 走看看