在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批量导出导入MySQL用户的方法
Nov 15 Python
跟老齐学Python之折腾一下目录
Oct 24 Python
浅谈对yield的初步理解
May 29 Python
Python SqlAlchemy动态添加数据表字段实例解析
Feb 07 Python
使用matplotlib画散点图的方法
May 25 Python
Python面向对象之类和实例用法分析
Jun 08 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
Jul 08 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
Aug 26 Python
解决pytorch报错:AssertionError: Invalid device id的问题
Jan 10 Python
pycharm 实现本地写代码,服务器运行的操作
Jun 08 Python
python和php哪个更适合写爬虫
Jun 22 Python
Pytorch生成随机数Tensor的方法汇总
Sep 09 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测试kafka项目示例
2020/02/06 PHP
javascript语言结构小记(一)
2011/09/10 Javascript
JavaScript学习笔记(二) js对象
2011/10/25 Javascript
jQuery代码优化 选择符篇
2011/11/01 Javascript
jQuery处理xml格式的返回数据(实例解析)
2013/11/28 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
2015/02/24 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
2015/10/20 Javascript
跟我学习javascript的prototype原型和原型链
2015/11/18 Javascript
jQuery弹出div层过2秒自动消失
2016/11/29 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
2017/09/10 Javascript
javascript使用链接跨域下载图片
2019/11/01 Javascript
js实现时钟定时器
2020/03/26 Javascript
react 不用插件实现数字滚动的效果示例
2020/04/14 Javascript
Vue的props父传子的示例代码
2020/05/20 Javascript
[50:22]完美盛典-2018年度红毯走秀
2018/12/16 DOTA
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
Python实现八大排序算法
2016/08/13 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
利用python如何处理百万条数据(适用java新手)
2018/06/06 Python
python pandas实现excel转为html格式的方法
2018/10/23 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
python 三种方法提取pdf中的图片
2021/02/07 Python
使用html2canvas实现将html内容写入到canvas中生成图片
2020/01/03 HTML / CSS
大学生求职简历的自我评价
2013/10/21 职场文书
如何签定毕业生就业协议书
2014/09/28 职场文书
教师个人成长总结
2015/02/11 职场文书
感恩教育观后感
2015/06/17 职场文书
送给客户微信问候语!
2019/07/04 职场文书
浅谈Python基础之列表那些事儿
2021/05/11 Python
postgresql 删除重复数据案例详解
2021/08/02 PostgreSQL
Redis之RedisTemplate配置方式(序列和反序列化)
2022/03/13 Redis