089 重用父类方法的两种方式
目录
- 一、直接调用指定类的方法
- 二、通过super()关键字
- 2.1 使用方法
- 2.2 使用super调用父类方法
- 2.3 super()的调用顺序
重用父类方法有两种方式:
- 指名道姓的使用,直接调用指定类的方法
- super关键字使用
一、直接调用指定类的方法
- 指名道姓的使用,跟继承没有关系。但也能完成需求
class Person:school = 'xxx'def __init__(self,name,age):self.name=nameself.age=agedef study(self):print('study....')class Student(Person):school = 'yyyy'def __init__(self,name,age,course):# 直接调用Person类的__init__方法Person.__init__(self,name,age)self.course=coursedef study(self):Person.study(self)print("%s学生在学习"%self.name)stu1=Student('wed',19,"Python")
# stu1.school='xxx'
print(stu1.school)
stu1.study()
yyyy
study....
wed学生在学习
二、通过super()关键字
首先,super()是用来调用父类(超类)的一个方法
它的调用顺序是根据 对象的mro()方法中的调用顺序来进行调用的。
2.1 使用方法
super()的使用方法,在python2和python3中并不相同。
新式类的写法:
super().__init__(参数1,参数2) # 新式类,调用父类的init方法并传参
经典类的写法:
super(当前类名,self).__init__(参数1,参数2) # 经典类,调用父类的init方法并传参
2.2 使用super调用父类方法
class Person(object):school = 'xxx'def __init__(self,name,age):self.name=nameself.age=agedef study(self):print('study....')class Student(Person):school = 'yyyy'def __init__(self,name,age,course):#super() 会按照mro列表拿到父类对象#对象来调用绑定方法,不需要传递第一个参数(self)super().__init__(name,age)#经典类和新式类#经典类中必须这么写(py3中没有经典类),都用上面那种方式写# super(Student,self).__init__(name,age)self.course=coursedef study(self):# Person.study(self)super().study()# print("%s学生在学习"%self.name)stu1=Student('wed',19,"Python")
# stu1.school='xxx'
# print(stu1.school)
stu1.study()
2.3 super()的调用顺序
牢记:它的调用顺序是根据 对象的mro()方法中的调用顺序来进行调用的。
# super是按照mro列表找
class A:def f1(self):print('A.f1')
class B:def f1(self):print('B.f1')def f2(self):print('B.f2')# 重点super().f1()class C(B,A):
#注意这个顺序,这个顺序报错
# class C(A,B):def f1(self):print('C.f1')#C实例化产生一个对象
c=C()
# print(c.f2())
print(C.mro())
c.f2()
[<class 'main.C'>, <class 'main.B'>, <class 'main.A'>, <class 'object'>]
B.f2
A.f1
转载于:https://www.cnblogs.com/XuChengNotes/p/11419215.html
089 重用父类方法的两种方式相关推荐
- php怎么跳转别的手机浏览器,JavaScript_JS脚本根据手机浏览器类型跳转WAP手机网站(两种方式),随着移动互联网的不断普及, - phpStudy...
JS脚本根据手机浏览器类型跳转WAP手机网站(两种方式) 随着移动互联网的不断普及,企业的网络宣传不仅只局限在PC端,还要在移动端发展.我们在自己的网站做了WAP手机完整之后,如果有用户通过手机访问我 ...
- pyqt5笔记 — 重写窗口方法closeEvent()的两种方式
@[TOC](pyqt5笔记 - 重写窗口方法closeEvent()的两种方式) 一.重写的作用 在开发过程中,经常会遇到一种需求:服务器端在主动发出一些信息给客户端,而在用户端关闭UI的时候,需要 ...
- 页面导航的两种方式——声明式导航、编程式导航||vue-router编程式导航||router.push() 方法的参数规则
页面导航的两种方式 vue-router编程式导航 编程式导航基本用法 <!DOCTYPE html> <html lang="en"><head&g ...
- jquery、javascript实现(get、post两种方式)跨域解决方法
jquery.javascript实现(get.post两种方式)跨域解决方法 一.实现get方式跨域请求数据 浏览器端 <script> $(document).ready(fun ...
- 注册事件的两种方式(传统注册事件、方法监听注册事件)
注册事件的两种方式 <!DOCTYPE html> <html lang="en"><head><meta charset="U ...
- drf-路由组件:自动生成Routers路由、 使用方法、视图集中附加action的声明、自动生成路由router的两种方式的URL区别
目录 一. 自动生成Routers路由 二. 使用方法 1) 创建router对象,并注册视图集,例如 2)添加路由数据 三. 代码演示 四. 视图集中附加action的声明 五. 自动生成路由rou ...
- 开启子进程的两种方式、进程间内存空间隔离、进程对象的方法或属性详解
1.操作系统(推荐查看书籍:现代操作系统) 操作系统是位于计算机硬件与软件之间的控制程序 作用: 1.将硬件的复杂操作封装成简单的接口,给用户或者应用程序使用 ...
- android 图片方法,分享实现Android图片选择的两种方式
Android选择图片的两种方式: 第一种:单张选取 通过隐式启动activity,跳转到相册选择一张返回结果 关键代码如下: 发送请求: private static final int PICTU ...
- php mysql 连接方法 对比_Mysql实例php连接MySQL的两种方式对比
<Mysql实例php连接MySQL的两种方式对比>要点: 本文介绍了Mysql实例php连接MySQL的两种方式对比,希望对您有用.如果有疑问,可以联系我们. MYSQL数据库记录一下P ...
- android获取ip方法,Android开发准确获取手机IP地址的两种方式
最近看了好多网上获取IP地址的例子,发现好多都不完全准确,这里我写一下获取ip地址的两种方式. 比如微信支付,后台在做接口的时候,要求App端传入IP地址,我们需要判断是网络环境,WI-FI还是3G, ...
最新文章
- 表单的增 删 改 查
- centos查看当前目录文件夹的大小与tar解压到指定目录
- Linux DNS服务配置与管理详解
- python 对象属性作为参数_如何将对象属性作为函数参数传递给lambda函数?
- 关于base64编码的原理及实现
- sql 查询结果为null替换 为 0
- 这就是八成女性不爱用刷脸支付的原因!支付宝:一周内给安排上
- 亲情可以冷酷到什么地步?大家有亲身经历的吗?
- Code Style of Mangata
- 批处理基础知识-EXIT
- SQLCODE 错误对照表
- 帆软报表填报成功后实时刷新当前页面
- JAVA计算机毕业设计疫情监测管理系统Mybatis+源码+数据库+lw文档+系统+调试部署
- MC官方模板的分析Day1
- 家用计算机都是专用计算机吗,什么是因特网概念和互联网一样吗(因特网发展历程)...
- 【读书笔记】销售运营-策略制定的6大原则及5个常用工具
- 计算机毕业设计JAVA高校体育场馆预约管理系统设计与实现mybatis+源码+调试部署+系统+数据库+lw
- 计算机里的le是什么符号,在python中传递le或ge符号
- Win系统 - 如何找出预装Windows系统的密钥
- 视壮科技:VS-RK3399简单的I2C 功能介绍
热门文章
- 怎么用editplus写asm文件_本周分享 | 用Typora写markdown文件
- 数据库中的case when ,if ,if null
- 判断鼠标不在控件上_【干货】Eprime编写鼠标点击型记忆再认实验
- 2.10.PHP7.1 狐教程-【PHP 函数】
- php的process_field,使用Boost :: Process运行php命令
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_汇总
- java学习笔记④MySql数据库--01/02 database table 数据的增删改
- sql语言的一大类 DML 数据的操纵语言
- Android HAL
- 809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。...