在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输出指定月份日历的方法
Apr 23 Python
使用Django的模版来配合字符串翻译工作
Jul 27 Python
JPype实现在python中调用JAVA的实例
Jul 19 Python
shell命令行,一键创建 python 模板文件脚本方法
Mar 20 Python
解决Shell执行python文件,传参空格引起的问题
Oct 30 Python
在Python 字典中一键对应多个值的实例
Feb 03 Python
解决Python正则表达式匹配反斜杠''\''问题
Jul 17 Python
在django中实现页面倒数几秒后自动跳转的例子
Aug 16 Python
python爬虫 基于requests模块的get请求实现详解
Aug 20 Python
python 计算两个列表的相关系数的实现
Aug 29 Python
Python xlrd模块导入过程及常用操作
Jun 10 Python
TensorFlow中tf.batch_matmul()的用法
Jun 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
javascript 清空form表单中某种元素的值
2009/12/26 Javascript
总结JavaScript三种数据存储方式之间的区别
2016/05/03 Javascript
AngularJS 如何在控制台进行错误调试
2016/06/07 Javascript
微信小程序之picker日期和时间选择器
2017/02/09 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
ES6学习教程之对象字面量详解
2017/10/09 Javascript
vue引入新版 vue-awesome-swiper插件填坑问题
2018/01/25 Javascript
angular 服务随记小结
2019/05/06 Javascript
layui导出所有数据的例子
2019/09/10 Javascript
jquery实现聊天机器人
2020/02/08 jQuery
js对象简介与基本用法示例
2020/03/13 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
2020/11/07 Javascript
Python中的choice()方法使用详解
2015/05/15 Python
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
2016/05/28 Python
CentOS中升级Python版本的方法详解
2017/07/10 Python
python 实现tar文件压缩解压的实例详解
2017/08/20 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
2017/08/30 Python
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
2018/07/17 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
基于Python安装pyecharts所遇的问题及解决方法
2019/08/12 Python
Pytorch提取模型特征向量保存至csv的例子
2020/01/03 Python
在Tensorflow中实现梯度下降法更新参数值
2020/01/23 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
2020/02/26 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
2020/02/26 Python
用pip给python安装matplotlib库的详细教程
2021/02/24 Python
Python实现我的世界小游戏源代码
2021/03/02 Python
香港永安旅游网:Wing On Travel
2017/04/10 全球购物
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
机械工程师的岗位职责
2013/11/17 职场文书
海南地接欢迎词
2014/01/14 职场文书
励志演讲稿300字
2014/08/21 职场文书
详解Go与PHP的语法对比
2021/05/29 PHP
springcloud之Feign超时问题的解决
2021/06/24 Java/Android
pycharm代码删除恢复的方法
2021/06/26 Python
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android