在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 相关文章推荐
Python3基础之list列表实例解析
Aug 13 Python
Python和perl实现批量对目录下电子书文件重命名的代码分享
Nov 21 Python
Python3 操作符重载方法示例
Nov 23 Python
python人民币小写转大写辅助工具
Jun 20 Python
Python进阶之@property动态属性的实现
Apr 01 Python
Django网络框架之创建虚拟开发环境操作示例
Jun 06 Python
python实现邮件自动发送
Aug 10 Python
对pytorch中的梯度更新方法详解
Aug 20 Python
tensorboard显示空白的解决
Feb 15 Python
Django 解决开发自定义抛出异常的问题
May 21 Python
python中adb有什么功能
Jun 07 Python
Python rabbitMQ如何实现生产消费者模式
Aug 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实现扫描二维码根据浏览器类型访问不同下载地址
2014/10/15 PHP
PHP中捕获超时事件的方法实例
2015/02/12 PHP
php恢复数组的key为数字序列的方法
2015/04/28 PHP
详解php比较操作符的安全问题
2015/12/03 PHP
PHP实现基于文本的摩斯电码生成器
2016/01/11 PHP
PHP迭代器接口Iterator用法分析
2017/12/28 PHP
JavaScript 特殊字符
2007/04/05 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
2013/06/09 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
2015/10/28 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
纯js实现悬浮按钮组件
2016/12/17 Javascript
node thread.sleep实现示例
2018/06/20 Javascript
js判断在哪个浏览器打开项目的方法
2020/01/21 Javascript
[02:12]DOTA2英雄基础教程 变体精灵
2013/12/16 DOTA
Python导入txt数据到mysql的方法
2015/04/08 Python
python写日志封装类实例
2015/06/28 Python
python中的decorator的作用详解
2018/07/26 Python
Python中常用的8种字符串操作方法
2019/05/06 Python
python实现串口通信的示例代码
2020/02/10 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
Python-jenkins模块获取jobs的执行状态操作
2020/05/12 Python
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
Omio意大利:全欧洲低价大巴、火车和航班搜索和比价
2017/12/02 全球购物
彪马加拿大官网:PUMA加拿大
2018/10/04 全球购物
美国在线家居装饰店:Belle&June
2018/10/24 全球购物
英国羊皮鞋类领先品牌:Just Sheepskin
2019/12/12 全球购物
设计毕业生简历中的自我评价
2013/10/01 职场文书
项目经理的岗位职责
2013/11/23 职场文书
工程质量承诺书
2014/03/27 职场文书
2014年人事专员工作总结
2014/11/19 职场文书
股权转让协议范本
2014/12/07 职场文书
个人政治思想总结
2015/03/05 职场文书
小学语文新课改心得体会
2016/01/22 职场文书
MySQL窗口函数的具体使用
2021/11/17 MySQL
详解Vue slot插槽
2021/11/20 Vue.js