目录

  • 一、直接调用指定类的方法
  • 二、通过super()关键字
    • 2.1 使用方法
    • 2.2 使用super调用父类方法
    • 2.3 super()的调用顺序

重用父类方法有两种方式:

  1. 指名道姓的使用,直接调用指定类的方法
  2. 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 重用父类方法的两种方式相关推荐

  1. php怎么跳转别的手机浏览器,JavaScript_JS脚本根据手机浏览器类型跳转WAP手机网站(两种方式),随着移动互联网的不断普及, - phpStudy...

    JS脚本根据手机浏览器类型跳转WAP手机网站(两种方式) 随着移动互联网的不断普及,企业的网络宣传不仅只局限在PC端,还要在移动端发展.我们在自己的网站做了WAP手机完整之后,如果有用户通过手机访问我 ...

  2. pyqt5笔记 — 重写窗口方法closeEvent()的两种方式

    @[TOC](pyqt5笔记 - 重写窗口方法closeEvent()的两种方式) 一.重写的作用 在开发过程中,经常会遇到一种需求:服务器端在主动发出一些信息给客户端,而在用户端关闭UI的时候,需要 ...

  3. 页面导航的两种方式——声明式导航、编程式导航||vue-router编程式导航||router.push() 方法的参数规则

    页面导航的两种方式 vue-router编程式导航 编程式导航基本用法 <!DOCTYPE html> <html lang="en"><head&g ...

  4. jquery、javascript实现(get、post两种方式)跨域解决方法

     jquery.javascript实现(get.post两种方式)跨域解决方法 一.实现get方式跨域请求数据 浏览器端 <script> $(document).ready(fun ...

  5. 注册事件的两种方式(传统注册事件、方法监听注册事件)

    注册事件的两种方式 <!DOCTYPE html> <html lang="en"><head><meta charset="U ...

  6. drf-路由组件:自动生成Routers路由、 使用方法、视图集中附加action的声明、自动生成路由router的两种方式的URL区别

    目录 一. 自动生成Routers路由 二. 使用方法 1) 创建router对象,并注册视图集,例如 2)添加路由数据 三. 代码演示 四. 视图集中附加action的声明 五. 自动生成路由rou ...

  7. 开启子进程的两种方式、进程间内存空间隔离、进程对象的方法或属性详解

    1.操作系统(推荐查看书籍:现代操作系统)     操作系统是位于计算机硬件与软件之间的控制程序     作用:         1.将硬件的复杂操作封装成简单的接口,给用户或者应用程序使用      ...

  8. android 图片方法,分享实现Android图片选择的两种方式

    Android选择图片的两种方式: 第一种:单张选取 通过隐式启动activity,跳转到相册选择一张返回结果 关键代码如下: 发送请求: private static final int PICTU ...

  9. php mysql 连接方法 对比_Mysql实例php连接MySQL的两种方式对比

    <Mysql实例php连接MySQL的两种方式对比>要点: 本文介绍了Mysql实例php连接MySQL的两种方式对比,希望对您有用.如果有疑问,可以联系我们. MYSQL数据库记录一下P ...

  10. android获取ip方法,Android开发准确获取手机IP地址的两种方式

    最近看了好多网上获取IP地址的例子,发现好多都不完全准确,这里我写一下获取ip地址的两种方式. 比如微信支付,后台在做接口的时候,要求App端传入IP地址,我们需要判断是网络环境,WI-FI还是3G, ...

最新文章

  1. 表单的增 删 改 查
  2. centos查看当前目录文件夹的大小与tar解压到指定目录
  3. Linux DNS服务配置与管理详解
  4. python 对象属性作为参数_如何将对象属性作为函数参数传递给lambda函数?
  5. 关于base64编码的原理及实现
  6. sql 查询结果为null替换 为 0
  7. 这就是八成女性不爱用刷脸支付的原因!支付宝:一周内给安排上
  8. 亲情可以冷酷到什么地步?大家有亲身经历的吗?
  9. Code Style of Mangata
  10. 批处理基础知识-EXIT
  11. SQLCODE 错误对照表
  12. 帆软报表填报成功后实时刷新当前页面
  13. JAVA计算机毕业设计疫情监测管理系统Mybatis+源码+数据库+lw文档+系统+调试部署
  14. MC官方模板的分析Day1
  15. 家用计算机都是专用计算机吗,什么是因特网概念和互联网一样吗(因特网发展历程)...
  16. 【读书笔记】销售运营-策略制定的6大原则及5个常用工具
  17. 计算机毕业设计JAVA高校体育场馆预约管理系统设计与实现mybatis+源码+调试部署+系统+数据库+lw
  18. 计算机里的le是什么符号,在python中传递le或ge符号
  19. Win系统 - 如何找出预装Windows系统的密钥
  20. 视壮科技:VS-RK3399简单的I2C 功能介绍

热门文章

  1. 怎么用editplus写asm文件_本周分享 | 用Typora写markdown文件
  2. 数据库中的case when ,if ,if null
  3. 判断鼠标不在控件上_【干货】Eprime编写鼠标点击型记忆再认实验
  4. 2.10.PHP7.1 狐教程-【PHP 函数】
  5. php的process_field,使用Boost :: Process运行php命令
  6. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_汇总
  7. java学习笔记④MySql数据库--01/02 database table 数据的增删改
  8. sql语言的一大类 DML 数据的操纵语言
  9. Android HAL
  10. 809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。...