在python里面运用多继承方法详解


Posted in Python onJuly 01, 2019

如何在PYTHON里面运用多继承

class Father:

  def hobby(self):

    print("love to play video game.")

    

class Mother:

  def cook(self):

    print("love to cook anything.")

 

#比如说有两个类,如果想要一个子类同时继承这两个类,应该怎么操作呢。

在python里面运用多继承方法详解

class Father:

  def hobby(self):

    print("love to play video game.")

    

class Mother:

  def cook(self):

    print("love to cook anything.")

    

class Son(Father, Mother):

  pass




son = Son()

son.hobby()

son.cook()

#只要在子类名称的后面加入两个父类,就可以进行多继承了。

在python里面运用多继承方法详解

class Father:

  def hobby(self):

    print("love to play video game.")

  def cook(self):

    print("love to cook anything.")    

class Mother:

  def cook(self):

    print("love to cook anything.")

  def hobby(self):

    print("love to play video game.")

    

class Son(Father, Mother):

  pass




son = Son()

son.hobby()

son.cook()

#但是如果子类继承的时候,发现两个父类的方法都是一模一样的,那就没法同时继承两人的了。

在python里面运用多继承方法详解

class Father:

  def hobby(self):

    print("love to play video game.")

  def cook(self):

    print("love to cook anything.")    

class Mother:

  def cook(self):

    print("love to cook anything.")

  def hobby(self):

    print("love to play video game.")

    

class Son(Mother, Father):

  pass




son = Son()

son.hobby()

son.cook()

#即使我们把位置调换了一下也是比较难看出究竟继承了谁。

在python里面运用多继承方法详解

print(Son.__mro__)

#实际上我们可以用mro来查看顺序,首先是子类,然后是母亲,接着是父亲,这是根据书写顺序的,最后就是object了。

在python里面运用多继承方法详解

class AAA(object):

  pass




aaa = AAA()

dir(aaa)

#我们可以查看object类里面有什么方法。

在python里面运用多继承方法详解

class AAA:

  pass




aaa = AAA()

dir(aaa)

#如果没有基类,一般还是要在后面加上object,这里PYTHON3,所以有加和没加没有区别,但还是建议要加上。

在python里面运用多继承方法详解

Python多继承实例扩展:

多继承的使用

#1.多继承:子类有多个父类
 
class Human:
  def __init__(self, sex):
    self.sex = sex
 
  def p(self):
    print("这是Human的方法")
 
 
class Person:
  def __init__(self, name):
    self.name = name
 
  def p(self):
    print("这是Person的方法")
 
  def person(self):
    print("这是我person特有的方法")
 
 
class Teacher(Person):
  def __init__(self, name, age):
    super().__init__(name)
    self.age = age
 
 
class Student(Human, Person):
  def __init__(self, name, sex, grade):
    #super().__init__(name) #注意:对于多继承来说,使用super只会调用第一个父类的属性方法
    #super().__init__(sex) #要想调用特定父类的构造器只能使用父类名.__init__方式。如下:
 
    Human.__init__(self,sex)
    Person.__init__(self,name)
    self.grade = grade
 
 
class Son(Human, Teacher):
  def __init__(self, sex, name, age, fan):
    Human.__init__(self, sex)
    Teacher.__init__(self, name, age)
    self.fan = fan
 
 
# ------创建对象 -------------
stu = Student("tom", "male", 88)
print(stu.name,stu.sex,stu.grade)
stu.p() # 虽然父类Human和Person都有同名P()方法 ,但是调用的是括号里的第一个父类Human的方法
 
 
son1 = Son("jerry", "female", 18, "打球")
son1.person() # 可以调用父类的父类的方法。
son1.p() # 子类调用众多父类中同名的方法,按继承的顺序查找。
=====================================================================================
tom male 88
这是Human的方法
这是我person特有的方法
这是Human的方法

以上就是关于Python里多继承的知识点总结,感谢大家的阅读和对三水点靠木的支持。

Python 相关文章推荐
python k-近邻算法实例分享
Jun 11 Python
python检测是文件还是目录的方法
Jul 03 Python
实例讲解Python中整数的最大值输出
Mar 17 Python
python 使用socket传输图片视频等文件的实现方式
Aug 07 Python
pytorch numpy list类型之间的相互转换实例
Aug 18 Python
分享一个pycharm专业版安装的永久使用方法
Sep 24 Python
Python 文件数据读写的具体实现
Jan 24 Python
python绘制玫瑰的实现代码
Mar 02 Python
CentOS 7如何实现定时执行python脚本
Jun 24 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
Jul 05 Python
Django中和时区相关的安全问题详解
Oct 12 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
Oct 30 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
Jul 01 #Python
用python打印1~20的整数实例讲解
Jul 01 #Python
python sklearn库实现简单逻辑回归的实例代码
Jul 01 #Python
python实现列表的排序方法分享
Jul 01 #Python
Apache,wsgi,django 程序部署配置方法详解
Jul 01 #Python
Python中字符串List按照长度排序
Jul 01 #Python
python opencv minAreaRect 生成最小外接矩形的方法
Jul 01 #Python
You might like
joomla jce editor 解决上传中文名文件失败问题
2013/06/09 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
javascript中的对象和数组的应用技巧
2007/01/07 Javascript
跨浏览器开发经验总结(四) 怎么写入剪贴板
2010/05/13 Javascript
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
JQuery操作tr和td内容的方法实例
2013/03/06 Javascript
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
JavaScript基础语法之js表达式
2016/06/07 Javascript
JS生成和下载二维码的代码
2016/12/07 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
Angular路由简单学习
2016/12/26 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
2017/03/04 Javascript
JS实现匀加速与匀减速运动的方法示例
2017/09/04 Javascript
vue的安装及element组件的安装方法
2018/03/09 Javascript
React组件内事件传参实现tab切换的示例代码
2018/07/04 Javascript
VUE解决微信签名及SPA微信invalid signature问题(完美处理)
2019/03/29 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
2020/04/27 Javascript
[07:26]2015国际邀请赛第二日TOP10集锦
2015/08/06 DOTA
用Python代码来绘制彭罗斯点阵的教程
2015/04/03 Python
Python实现的多线程http压力测试代码
2017/02/08 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
2017/03/20 Python
Python实现通过文件路径获取文件hash值的方法
2017/04/29 Python
python 遍历目录(包括子目录)下所有文件的实例
2018/07/11 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
2018/08/03 Python
基于OpenCV python3实现证件照换背景的方法
2019/03/22 Python
python使用pymongo与MongoDB基本交互操作示例
2020/04/09 Python
CSS3实现王者匹配时的粒子动画效果
2019/04/12 HTML / CSS
12个不为大家熟知的HTML5设计小技巧
2016/06/02 HTML / CSS
求职信范文英文版
2014/01/05 职场文书
2014年党课学习心得体会
2014/07/08 职场文书
企业优秀团员事迹材料
2014/08/20 职场文书
党的群众路线对照检查材料思想汇报(学校)
2014/10/04 职场文书
2014年保险公司工作总结
2014/11/22 职场文书
2014年小学工作总结
2014/11/26 职场文书
python 爬取吉首大学网站成绩单
2021/06/02 Python
PHP中多字节字符串操作实例详解
2021/08/23 PHP