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)

  • 相关阅读:
    好文章集合
    WPF:布局
    xcode6.0 模拟器打不开
    vue-vux初学
    【个人笔记】《知了堂》MySQL三种关系:一对一,一对多,多对多。
    vue-axios跨域配置
    vue+webpack使用
    vs code插件
    echarts图表属性设置
    【个人笔记】《知了堂》ajax的get及post请求
  • 原文地址:https://www.cnblogs.com/homle/p/8724125.html
Copyright © 2011-2022 走看看