在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.3教程之模拟百度登陆代码分享
Jan 16 Python
使用django-suit为django 1.7 admin后台添加模板
Nov 18 Python
谈谈python中GUI的选择
Mar 01 Python
Python利用正则表达式实现计算器算法思路解析
Apr 25 Python
django 修改server端口号的方法
May 14 Python
python写入数据到csv或xlsx文件的3种方法
Aug 23 Python
Python语法之精妙的十个知识点(装B语法)
Jan 18 Python
Numpy(Pandas)删除全为零的列的方法
Sep 11 Python
基于python模拟bfs和dfs代码实例
Nov 19 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
Dec 04 Python
python利用文件时间批量重命名照片和视频
Feb 09 Python
python开发实时可视化仪表盘的示例
May 07 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
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
PHP中使用memcache存储session的三种配置方法
2014/04/05 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
2014/05/06 PHP
PHP错误和异常处理功能模块示例
2016/11/12 PHP
?牟┛途W扣了一??效果出?? target=
2007/05/27 Javascript
js 优化次数过多的循环 考虑到性能问题
2011/03/05 Javascript
javascript解决IE6下hover问题的方法
2015/07/28 Javascript
深入解析JavaScript中的arguments对象
2016/06/12 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
2016/08/24 Javascript
原生js实现吸顶效果
2017/03/13 Javascript
karma+webpack搭建vue单元测试环境的方法示例
2018/05/24 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
基于vue.js实现分页查询功能
2018/12/29 Javascript
微信小程序实现页面浮动导航
2019/01/28 Javascript
js最全的数组的降维5种办法(小结)
2020/04/28 Javascript
jQuery 实现DOM元素拖拽交换位置的实例代码
2020/07/14 jQuery
VUE Elemen-ui之穿梭框使用方法详解
2021/01/19 Javascript
Python中执行存储过程及获取存储过程返回值的方法
2017/10/07 Python
浅谈Python批处理文件夹中的txt文件
2019/03/11 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
Django通过json格式收集主机信息
2020/05/29 Python
如何卸载python插件
2020/07/08 Python
用python对oracle进行简单性能测试
2020/12/05 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
英国的屈臣氏:Boots博姿
2017/12/23 全球购物
Harrods美国:英国最大的百货公司
2018/11/04 全球购物
MAC彩妆澳洲官网:M·A·C AU
2021/01/17 全球购物
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
什么是设计模式
2012/06/17 面试题
高级销售员求职信
2013/10/25 职场文书
测试工程师程序员求职信范文
2014/02/20 职场文书
岗位廉洁从业承诺书
2014/03/28 职场文书
大学共青团员个人自我评价
2014/04/16 职场文书
活动总结的格式
2014/05/07 职场文书
研究生导师推荐信
2015/03/25 职场文书
对讲机的最大通讯距离是多少
2022/02/18 无线电