在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 图片验证码代码分享
Jul 04 Python
Python bsddb模块操作Berkeley DB数据库介绍
Apr 08 Python
python简单实现旋转图片的方法
May 30 Python
分享一个可以生成各种进制格式IP的小工具实例代码
Jul 28 Python
Python面向对象进阶学习
May 21 Python
Python操作Mongodb数据库的方法小结
Sep 10 Python
opencv-python 提取sift特征并匹配的实例
Dec 09 Python
Python全面分析系统的时域特性和频率域特性
Feb 26 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
May 20 Python
pytorch 查看cuda 版本方式
Jun 23 Python
Python基于traceback模块获取异常信息
Jul 23 Python
python 获取谷歌浏览器保存的密码
Jan 06 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 register_shutdown_function()函数的使用示例
2015/06/23 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
2016/04/15 PHP
PHP+iframe图片上传实现即时刷新效果
2016/11/18 PHP
YII2框架中日志的配置与使用方法实例分析
2020/03/18 PHP
js获取url参数的使用扩展实例
2007/12/29 Javascript
浅谈javascript的数据类型检测
2010/07/10 Javascript
js下写一个事件队列操作函数
2010/07/19 Javascript
JavaScript对象学习经验整理
2013/10/12 Javascript
JS短路原理的应用示例 精简代码的途径
2013/12/13 Javascript
js动态移动滚动条至底部示例代码
2014/04/24 Javascript
JavaScript获取页面中超链接数量的方法
2015/11/09 Javascript
如何用JavaScript实现动态修改CSS样式表
2016/05/20 Javascript
关于vue-router路径计算问题
2017/05/10 Javascript
js字符串倒序的实例代码
2018/11/30 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
2019/02/20 Javascript
Webpack 4如何动态切割JS注入文件名详解
2019/07/09 Javascript
javascript设计模式之装饰者模式
2020/01/30 Javascript
vue 获取url里参数的两种方法小结
2020/11/12 Javascript
[48:02]Ti4循环赛第三日 VG vs Liquid和NEWBEE vs DK
2014/07/12 DOTA
Python Web服务器Tornado使用小结
2014/05/06 Python
python读取中文txt文本的方法
2018/04/12 Python
Python玩转加密的技巧【推荐】
2019/05/13 Python
德国净水壶和滤芯品牌:波尔德PearlCo(家用净水器)
2020/04/29 全球购物
物流专业大学的自我评价
2014/01/11 职场文书
幼儿园师德演讲稿
2014/05/06 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
师范毕业生求职信
2014/07/11 职场文书
总经理助理岗位职责范本
2014/07/20 职场文书
三严三实对照检查材料范文
2014/09/23 职场文书
党员剖析材料范文
2014/09/30 职场文书
教代会闭幕词
2015/01/28 职场文书
库房管理员岗位职责
2015/02/12 职场文书
2015迎新晚会开场白
2015/05/29 职场文书
Nginx快速入门教程
2021/03/31 Servers
jquery插件实现图片悬浮
2021/04/16 jQuery
MySQL详解进行JDBC编程与增删改查方法
2022/06/16 MySQL