在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实现360的字符显示界面
Feb 21 Python
python中split方法用法分析
Apr 17 Python
Python实现动态图解析、合成与倒放
Jan 18 Python
实例讲解Python脚本成为Windows中运行的exe文件
Jan 24 Python
Python 编程速成(推荐)
Apr 15 Python
python使用装饰器作日志处理的方法
Jul 11 Python
python pygame实现球球大作战
Nov 25 Python
Python3打包exe代码2种方法实例解析
Feb 17 Python
Python使用configparser读取ini配置文件
May 25 Python
利用Python的folium包绘制城市道路图的实现示例
Aug 24 Python
Python数据模型与Python对象模型的相关总结
Jan 26 Python
浅谈盘点5种基于Python生成的个性化语音方法
Feb 05 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
基于php设计模式中单例模式的应用分析
2013/05/15 PHP
PHP 设计模式系列之 specification规格模式
2016/01/10 PHP
PHP进行批量任务处理不超时的解决方法
2016/07/11 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
关于IFRAME 自适应高度的研究
2006/07/20 Javascript
RGB颜色值转HTML十六进制(HEX)代码的JS函数
2009/04/25 Javascript
jquery validate使用攻略 第四步
2010/07/01 Javascript
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
js表头排序实现方法
2015/01/16 Javascript
JS使用eval解析JSON的注意事项分析
2015/11/14 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
2018/12/13 Javascript
layui 点击重置按钮, select 并没有被重置的解决方法
2019/09/03 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
利用python获得时间的实例说明
2013/03/25 Python
Python中new方法的详解
2019/01/15 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
Python3中exp()函数用法分析
2019/02/19 Python
django认证系统 Authentication使用详解
2019/07/22 Python
Python基于内置库pytesseract实现图片验证码识别功能
2020/02/24 Python
Pytorch 使用CNN图像分类的实现
2020/06/16 Python
Python安装第三方库攻略(pip和Anaconda)
2020/10/15 Python
实例讲解使用CSS实现多边框和透明边框的方法
2015/09/08 HTML / CSS
5个你不知道的HTML5的接口介绍
2013/08/07 HTML / CSS
Gap中国官网:美式休闲风服饰
2017/02/05 全球购物
总经理助理工作职责
2014/02/06 职场文书
低碳环保倡议书
2014/04/14 职场文书
师范毕业生求职信
2014/07/11 职场文书
计划生育汇报材料
2014/12/26 职场文书
检讨书模板大全
2015/05/07 职场文书
公司员工宿舍管理制度
2015/08/07 职场文书
小学生红领巾广播稿
2015/08/19 职场文书
Python使用random模块实现掷骰子游戏的示例代码
2021/04/29 Python
python四种出行路线规划的实现
2021/06/23 Python
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript
JS前端使用canvas实现扩展物体类和事件派发
2022/08/05 Javascript