zoukankan      html  css  js  c++  java
  • python中子类调用父类的方法

    1子类调用父类构造方法

    class Animal(object):
        def __init__(self):
            print("init Animal class~")
    
        def run(self):
            print("animal run!")
    
    
    class Dog(Animal):
    
        def __init__(self):
            #若子类没有重写构造方法,则会调用父类的。否则python不会自动调用父类构造方法。
    #显式的调用父类构造方法的三种方式 #Animal.__init__(self) #super(Dog, self).__init__() super().__init__() print("init Dog class~") def run(self): print("dog run!")

    测试Dog().run()运行结果如下

    init Animal class~
    init Dog class~
    dog run!

    子类实现了自己构造函数,就会调用自己的构造函数,python不会自动调用父类构造函数(与Java不一样),既然是继承,辣么就应该在子类的构造函数里面手动调用父类的构造函数。上述有三种方式。

    若将Dog类改为:

    class Dog(Animal):
    
        def run(self):
            print("dog run!")

    这里Dog用的默认构造函数,测试Dog().run()运行结果如下

    init Animal class~
    dog run

    子类没有定义自己的构造函数时,会调用父类的构造函数。如果有多个父类呢?

    class Animal(object):
        def __init__(self):
            print("init Animal class~")
    
        def run(self):
            print("animal run!")
    
    
    class Father(object):
        def __init__(self):
            print("init Father class~")
    
    
    class Dog(Animal,Father):
        def run(self):
            print("dog run!")

    测试Dog().run()运行结果如下

    init Animal class~
    dog run!

    只会运行Animal的构造函数,若将Father放在第一个父类

    class Dog(Father,Animal):
        def run(self):
            print("dog run!")

    测试Dog().run()运行结果如下

    init Father class~
    dog run!

    子类没有定义自己的构造函数时,只会调用第一个父类的构造函数。

    2子类调用父类普通方法

    class Animal(object):
    
        def run(self):
            print("animal run!")
    
    
    class Bird(Animal):
    
        def run(self):
            #Animal.run(self)
            #super(Bird, self).run()
            super().run()

    测试Bird().run()运行结果如下:

    animal run!

    可以发现和调用构造方法的方式是一样的。

  • 相关阅读:
    Android学习——体验活动的生命周期
    Android学习——活动的生存期
    《程序员修炼之道:从小工到专家》 阅读笔记01
    开课第七周周总结
    Android学习——活动状态
    Android学习——返回栈
    Android学习——Intent传递数据
    Android学习——隐式Activity的用法
    Android学习——隐式Activity
    Android学习——使用显示Intent
  • 原文地址:https://www.cnblogs.com/ouym/p/9120739.html
Copyright © 2011-2022 走看看