在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使用urlparse分析网址中域名的方法
Apr 15 Python
Python第三方库的安装方法总结
Jun 06 Python
Python类属性的延迟计算
Oct 22 Python
Python利用正则表达式实现计算器算法思路解析
Apr 25 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
Jul 15 Python
Python+OpenCv制作证件图片生成器的操作方法
Aug 21 Python
Python定时器线程池原理详解
Feb 26 Python
Django操作session 的方法
Mar 09 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
Mar 11 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
Jul 20 Python
基于Django集成CAS实现流程详解
Nov 28 Python
python对文档中元素删除,替换操作
Apr 02 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 mssql扩展SQL查询中文字段名解决方法
2012/10/15 PHP
php eval函数用法 PHP中eval()函数小技巧
2012/10/31 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
使用PHP similar text计算两个字符串相似度
2015/11/06 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
2019/01/10 PHP
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
原生JS操作网页给p元素添加onclick事件及表格隔行变色
2013/12/01 Javascript
原生JS实现几个常用DOM操作API实例
2017/01/19 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
微信小程序实现的涂鸦功能示例【附源码下载】
2018/01/12 Javascript
jQuery实现购物车的总价计算和总价传值功能
2018/11/28 jQuery
ES6对象操作实例详解
2020/05/23 Javascript
python的tkinter布局之简单的聊天窗口实现方法
2014/09/03 Python
跟老齐学Python之使用Python查询更新数据库
2014/11/25 Python
Python中IPYTHON入门实例
2015/05/11 Python
pandas.DataFrame.to_json按行转json的方法
2018/06/05 Python
简单了解python中对象的取反运算符
2019/07/01 Python
Smallable英国家庭概念店:设计师童装及家居装饰
2017/07/05 全球购物
下述程序的作用是计算机数组中的最大元素值及其下标
2012/11/26 面试题
机电一体化职业规划书
2014/01/07 职场文书
2014年圣诞节促销方案
2014/03/14 职场文书
大学社团计划书
2014/05/01 职场文书
2014副镇长民主生活会个人对照检查材料思想汇报
2014/09/30 职场文书
街道务虚会发言材料
2014/10/20 职场文书
学校党的群众路线教育实践活动整改措施
2014/10/25 职场文书
搬迁通知
2015/04/20 职场文书
2015年教师节广播稿
2015/08/19 职场文书
心理健康教育培训研修感言
2015/11/18 职场文书
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery
MySQL GRANT用户授权的实现
2021/06/18 MySQL
MongoDB 常用的crud操作语句
2021/06/20 MongoDB
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL
MySQL学习之基础操作总结
2022/03/19 MySQL
基于Android10渲染Surface的创建过程
2022/08/14 Java/Android