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 之路
  • 相关阅读:
    Linux系统中常用操作命令
    CentOS 7 巨大变动之 systemd 取代 SysV的Init
    不可不知的安卓屏幕知识
    Gradle-jar-aar
    【Android】开源项目汇总
    Android中关于系统Dialog无法全屏的问题(dialog样式)
    Android LockScreen (锁屏弹窗)
    linux 权限设置
    android 多语言(在APP里面内切换语言)
    host更新
  • 原文地址:https://www.cnblogs.com/xc1234/p/9129000.html
Copyright © 2011-2022 走看看