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!

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

  • 相关阅读:
    概率论与数理统计(3)
    平衡二叉树(AVL)实现(3)删除
    平衡二叉树(AVL)实现(1)
    利用C#2005实现数据表的基本操作
    用js计算时间差,得到比较人性化的结果
    WinForm 窗口最小化到托盘 notifyIcon
    wget 使用技巧
    使用javascript从url获取参数值
    OWC做电子表格和图表的试验
    C#中combobox 和TreeView控件属性、事件、方法收集
  • 原文地址:https://www.cnblogs.com/ouym/p/9120739.html
Copyright © 2011-2022 走看看