在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绘制七段数码管实例代码
Dec 20 Python
Python入门学习指南分享
Apr 11 Python
详谈Numpy中数组重塑、合并与拆分方法
Apr 17 Python
django传值给模板, 再用JS接收并进行操作的实例
May 28 Python
Python 200行代码实现一个滑动验证码过程详解
Jul 11 Python
python解析xml文件方式(解析、更新、写入)
Mar 05 Python
pyqt5中动画的使用详解
Apr 01 Python
解决Python在导入文件时的FileNotFoundError问题
Apr 10 Python
如何在mac版pycharm选择python版本
Jul 21 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
Jul 30 Python
Pytest测试框架基本使用方法详解
Nov 25 Python
Django实现翻页的示例代码
May 24 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循环table实现一行两列显示的方法
2015/06/04 PHP
PHP+Ajax实现验证码的实时验证
2016/07/20 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
浅谈Laravel模板实体转义带来的坑
2019/10/22 PHP
javascript面向对象包装类Class封装类库剖析
2013/01/24 Javascript
js实现的GridView即表头固定表体有滚动条且可滚动
2014/02/19 Javascript
jquery实现漫天雪花飞舞的圣诞祝福雪花效果代码分享
2015/08/20 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
js定时器实例分享
2016/12/20 Javascript
jQuery表格(Table)基本操作实例分析
2017/03/10 Javascript
微信小程序云函数使用mysql数据库过程详解
2019/08/07 Javascript
微信小程序(订阅消息)功能
2019/10/25 Javascript
JavaScript中CreateTextFile函数
2020/08/30 Javascript
JavaScript实现轮播图效果
2020/10/30 Javascript
CentOS 8.2服务器上安装最新版Node.js的方法
2020/12/16 Javascript
[00:52]DOTA2第二届亚洲邀请赛预选赛宣传片
2017/01/13 DOTA
python执行等待程序直到第二天零点的方法
2015/04/23 Python
Python中基础的socket编程实战攻略
2016/06/01 Python
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
Django学习教程之静态文件的调用详解
2018/05/08 Python
详解flask表单提交的两种方式
2018/07/21 Python
Python并发之多进程的方法实例代码
2018/08/15 Python
django query模块
2019/04/20 Python
Numpy将二维数组添加到空数组的实现
2019/12/05 Python
Python实现bilibili时间长度查询的示例代码
2020/01/14 Python
python实现随机加减法生成器
2020/02/24 Python
python lambda的使用详解
2021/02/26 Python
历史专业个人求职信分享
2013/12/20 职场文书
小学生暑假家长评语
2014/04/17 职场文书
聘用意向书
2014/07/29 职场文书
含预算的公司户外活动方案
2014/08/16 职场文书
房地产营销活动策划方案
2014/09/15 职场文书
趣味运动会简讯
2015/07/20 职场文书
mysql升级到5.7时,wordpress导数据报错1067的问题
2021/05/27 MySQL
MySQL事务的隔离级别详情
2022/07/15 MySQL