在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生成器generator用法实例分析
Jun 04 Python
详解Python import方法引入模块的实例
Aug 02 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
Jun 13 Python
Python实现的txt文件去重功能示例
Jul 07 Python
PyQt5实现简单数据标注工具
Mar 18 Python
基于 Django 的手机管理系统实现过程详解
Aug 16 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
Sep 16 Python
Python Numpy 自然数填充数组的实现
Nov 28 Python
适合Python初学者的一些编程技巧
Feb 12 Python
python numpy库linspace相同间隔采样的实现
Feb 25 Python
Python利用folium实现地图可视化
May 23 Python
Python 统计序列中元素的出现频度
Apr 26 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
基于curl数据采集之正则处理函数get_matches的使用
2013/04/28 PHP
有关于PHP中常见数据类型的汇总分享
2014/01/06 PHP
php解决约瑟夫环示例
2014/04/09 PHP
PHP面试题之文件目录操作
2015/10/15 PHP
nicejforms——美化表单不用愁
2007/02/20 Javascript
js window.onload 加载多个函数的方法
2009/11/02 Javascript
读jQuery之十二 删除事件核心方法
2011/07/31 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
jQuery UI Dialog 创建友好的弹出对话框实现代码
2012/04/12 Javascript
js给dropdownlist添加选项的小例子
2013/03/04 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
javascript框架设计读书笔记之数组的扩展与修复
2014/12/02 Javascript
jQuery实现跨域iframe接口方法调用
2015/03/14 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
2015/10/23 Javascript
JavaScript Math 对象常用方法总结
2016/04/28 Javascript
微信小程序 教程之注册页面
2016/10/17 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
python数据结构之列表和元组的详解
2017/09/23 Python
Python类的继承和多态代码详解
2017/12/27 Python
Django之使用内置函数和celery发邮件的方法示例
2019/09/16 Python
Python argparse模块应用实例解析
2019/11/15 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
2020/10/23 Python
美国室内和室外装饰花盆购物网站:ePlanters
2019/03/22 全球购物
自我鉴定的范文
2013/10/03 职场文书
行政主管岗位职责
2013/11/18 职场文书
个人实用的自我评价范文
2013/11/23 职场文书
应届大专生自荐书
2014/06/16 职场文书
个人委托书
2014/07/31 职场文书
五四演讲稿范文
2014/09/03 职场文书
房屋授权委托书范本
2014/10/07 职场文书
2015年社会实践个人总结
2015/03/06 职场文书
毕业晚宴祝酒词
2015/08/11 职场文书
总结python多进程multiprocessing的相关知识
2021/06/29 Python
微信小程序中使用vant框架的具体步骤
2022/02/18 Javascript