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!

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

python中子类调用父类的方法的更多相关文章

  1. python子类调用父类的方法

    python子类调用父类的方法 python和其他面向对象语言类似,每个类可以拥有一个或者多个父类,它们从父类那里继承了属性和方法.如果一个方法在子类的实例中被调用,或者一个属性在子类的实例中被访问, ...

  2. Python开发基础-Day20继承实现原理、子类调用父类的方法、封装

    继承实现原理 python中的类可以同时继承多个父类,继承的顺序有两种:深度优先和广度优先. 一般来讲,经典类在多继承的情况下会按照深度优先的方式查找,新式类会按照广度优先的方式查找 示例解析: 没有 ...

  3. python基础之继承实现原理、子类调用父类的方法、封装

    继承实现原理 python中的类可以同时继承多个父类,继承的顺序有两种:深度优先和广度优先. 一般来讲,经典类在多继承的情况下会按照深度优先的方式查找,新式类会按照广度优先的方式查找 示例解析: 没有 ...

  4. C#中子类调用父类的实现方法

    这篇文章主要介绍了C#中子类调用父类的实现方法,通过实例逐步分析了类中初始化构造函数的执行顺序问题,有助于加深对C#面向对象程序设计的理解,需要的朋友可以参考下     本文实例讲述了C#中实现子类调 ...

  5. 关于Java中子类调用父类方法

    当一个类继承于另一个类,子类中没有父类的方法时.用子类的对象调用方法时,会首先在子类中查找,如果子类中没有改方法,再到父类中查找. 当一个方法只在父类中定义时,调用该方法时会使用父类中的属性. 如果该 ...

  6. python使用super()调用父类的方法

    如果要在子类中引用父类的方法,但是又需要添加一些子类所特有的内容,可通过类名.方法()和super()来调用父类的方法,再个性化子类的对应函数. 直接使用类名.方法()来调用时,还是需要传入self为 ...

  7. Day7 子类调用父类的方法supper 绑定方法与非绑定方法

    supper:可以利用supper来重用父类的方法,可以不用指名道姓的调用了. class OldboyPeople: school = 'oldboy' def __init__(self,name ...

  8. JavaScript中子类调用父类方法的实现

    一.前言 最近在项目中,前端框架使用JavaScript面向对象编程,遇到了诸多问题,其中最典型的问题就是子类调用父类(super class)同名方法,也就是如C#中子类中调用父类函数base.** ...

  9. python之子类调用父类的两种方式

    第一种方式 直接在子类中调用父类名: Vehicle.__init__(self,name,speed,load,power)#调用父类的实例 Vehicle.run(self) #调用父类的方法 # ...

随机推荐

  1. python写的的简单的爬虫小程序

    import re import urllib def getHtml(url): page=urllib.urlopen(url) html=page.read() return html def ...

  2. python Mixin 是个啥?

    内容待添加... 参考文章: [1][python] Mixin 扫盲班

  3. AC日记——[LNOI2014]LCA bzoj 3626

    3626 思路: 离线操作+树剖: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 #defin ...

  4. 【JavaScript】setinterval和setTimeout的区别

    计时器setTimeout()与setInterval()是原生JS很重要且用处很多的两个方法, 但很多人一直误以为是相同的功能: 间隔时间重复执行传入的句柄函数. 但实际上, 并非如此, 既然JS给 ...

  5. mysql查询优化以及面试小结

    mysql面试小结: 1.mysql的基本架构 2.mysql的索引 btree+的原理 3.mysql的索引优化 4.mysql的sql查询优化 慢查询日志 Show prodile 全局查询日志 ...

  6. 洛谷——P2381 圆圆舞蹈

    P2381 圆圆舞蹈 题目描述 熊大妈的乃修在时针的带领下,围成了一个圆圈舞蹈,由于没有严格的教育,奶牛们之间的间隔不一致. 奶牛想知道两只最远的奶牛到底隔了多远.奶牛A到B的距离为A顺时针走和逆时针 ...

  7. 【SpringMVC】一次处理项目中文乱码的经历

    一次处理项目中文乱码的经历 背景 今天把旧服务器上的项目转移到新服务器上,结果返回的json中的中文乱码了,觉得很奇怪,因为新服务器和旧服务器都是TX云,也不会有太大区别呀,于是乎开始了为期半天的蛋疼 ...

  8. HashMap 不能并发

    问题的症状 从前我们的Java代码因为一些原因使用了HashMap这个东西,但是当时的程序是单线程的,一切都没有问题.后来,我们的程序性能有问题,所以需要变成多线程的,于是,变成多线程后到了线上,发现 ...

  9. Visual Studio 2017启动x86的Android模拟器失败

     Visual Studio 2017启动x86的Android模拟器失败 Visual Studio 2017默认提供多个Android模拟器.其中,x86模拟器运行较快.但是由于和Hyper-V服 ...

  10. [BZOJ4698][SDOI2008]Sandy的卡片(后缀自动机)

    差分之后就是求多串LCS. 对其中一个串建SAM,然后把其它串放在上面跑. 对SAM上的每个状态都用f[x]记录这个状态与当前串的最长匹配长度,res[x]是对每次的f[x]取最小值.答案就是res[ ...