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!
可以发现和调用构造方法的方式是一样的。
python中子类调用父类的方法的更多相关文章
- python子类调用父类的方法
python子类调用父类的方法 python和其他面向对象语言类似,每个类可以拥有一个或者多个父类,它们从父类那里继承了属性和方法.如果一个方法在子类的实例中被调用,或者一个属性在子类的实例中被访问, ...
- Python开发基础-Day20继承实现原理、子类调用父类的方法、封装
继承实现原理 python中的类可以同时继承多个父类,继承的顺序有两种:深度优先和广度优先. 一般来讲,经典类在多继承的情况下会按照深度优先的方式查找,新式类会按照广度优先的方式查找 示例解析: 没有 ...
- python基础之继承实现原理、子类调用父类的方法、封装
继承实现原理 python中的类可以同时继承多个父类,继承的顺序有两种:深度优先和广度优先. 一般来讲,经典类在多继承的情况下会按照深度优先的方式查找,新式类会按照广度优先的方式查找 示例解析: 没有 ...
- C#中子类调用父类的实现方法
这篇文章主要介绍了C#中子类调用父类的实现方法,通过实例逐步分析了类中初始化构造函数的执行顺序问题,有助于加深对C#面向对象程序设计的理解,需要的朋友可以参考下 本文实例讲述了C#中实现子类调 ...
- 关于Java中子类调用父类方法
当一个类继承于另一个类,子类中没有父类的方法时.用子类的对象调用方法时,会首先在子类中查找,如果子类中没有改方法,再到父类中查找. 当一个方法只在父类中定义时,调用该方法时会使用父类中的属性. 如果该 ...
- python使用super()调用父类的方法
如果要在子类中引用父类的方法,但是又需要添加一些子类所特有的内容,可通过类名.方法()和super()来调用父类的方法,再个性化子类的对应函数. 直接使用类名.方法()来调用时,还是需要传入self为 ...
- Day7 子类调用父类的方法supper 绑定方法与非绑定方法
supper:可以利用supper来重用父类的方法,可以不用指名道姓的调用了. class OldboyPeople: school = 'oldboy' def __init__(self,name ...
- JavaScript中子类调用父类方法的实现
一.前言 最近在项目中,前端框架使用JavaScript面向对象编程,遇到了诸多问题,其中最典型的问题就是子类调用父类(super class)同名方法,也就是如C#中子类中调用父类函数base.** ...
- python之子类调用父类的两种方式
第一种方式 直接在子类中调用父类名: Vehicle.__init__(self,name,speed,load,power)#调用父类的实例 Vehicle.run(self) #调用父类的方法 # ...
随机推荐
- 解决Tomcat因Redis加载慢而启动失败的问题
StartTomcat.py import subprocess as t import time, os, requests, sys WEB_IP = '127.0.0.1:8080' # WEB ...
- Word中截取部分内容并保存为jpg图片的方法
private void button1_Click(object sender, EventArgs e) { var appWord = new Microsoft.Office.Interop. ...
- c# 发送web请求
我们目前涉及到的现有的接收请求方式有三种, 第一种: 页面式的Form表单 第二种: 服务的webservice形式的xml 第三个: restful风格的post包体json 第一种比较老,博客园的 ...
- 利用jquery.touchSwipe.js实现的移动滑屏效果。
利用jquery.touchSwipe.js实现的移动滑屏效果. 亲测:兼容ie8及各种浏览器 <script type="text/javascript" src=&quo ...
- Nmap误报1720端口开放的原因
在使用Nmap扫描服务器开放端口(全连接扫描)时,一直会发现误报1720端口开放,telnet也有时会连接成功.而实际上服务器并未开启此端口.经过查阅资料,确定原因如下: H.323协议在负载中放入了 ...
- Ubuntu 17.04 搭建LAMP服务器环境流程
安装Apache2 安装代码 sudo apt-get install apache2 更改默认目录 sudo vim /etc/apache2/apache2.conf // 将 <Direc ...
- keycloack docker 本地运行
参考github地址:https://github.com/jboss-dockerfiles/keycloak 首先使用git 下载该项目 使用docker-compose运行项目,需要进入至doc ...
- 如何学习Docker
如何学习Docker 学习Docker,如果没有云计算的基本知识,以及内核的基本知识,那么学习并理解起来会稍吃力.作为容器,Docker容器的优势在哪,不足在哪,最好了解容器的实现是怎样的(简单了解) ...
- mysql查看表结构,字段等命令
mysql查看表结构命令,如下: desc 表名; show columns from 表名; describe 表名; show create table 表名;
- linux文件简单操作
1.vim常用快捷键 dd/ndd 删除1行/删除n行 yy/nyy 复制1行/复制n行 p 粘贴 u 撤销 dw/ndw 删除一个单词/删除n个单词 G /nG 到一行尾/第n行尾 :!+命令 ...