在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实现telnet客户端的方法
Apr 15 Python
windows下python之mysqldb模块安装方法
Sep 07 Python
Django项目中添加ldap登陆认证功能的实现
Apr 04 Python
python ChainMap 合并字典的实现步骤
Jun 11 Python
在python里面运用多继承方法详解
Jul 01 Python
Django用户认证系统 Web请求中的认证解析
Aug 02 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
Apr 02 Python
利用matplotlib为图片上添加触发事件进行交互
Apr 23 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
Jun 11 Python
Python中过滤字符串列表的方法
Dec 22 Python
matplotlib部件之套索Lasso的使用
Feb 24 Python
python中的None与NULL用法说明
May 25 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 zip文件解压类代码
2009/12/02 PHP
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
php+ajax实现无刷新的新闻留言系统
2020/12/21 PHP
WordPress中用于创建以及获取侧边栏的PHP函数讲解
2015/12/29 PHP
laravel中的错误与日志用法详解
2016/07/26 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
2019/06/08 PHP
Lazy Load 延迟加载图片的 jQuery 插件
2010/02/06 Javascript
JS对话框_JS模态对话框showModalDialog用法总结
2014/01/11 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
bootstrap警告框示例代码分享
2017/05/17 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
[01:03:50]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第二场 2月7日
2021/03/11 DOTA
Python CSV模块使用实例
2015/04/09 Python
初步介绍Python中的pydoc模块和distutils模块
2015/04/13 Python
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
2015/05/16 Python
简单谈谈Python中的闭包
2016/11/30 Python
Python基于多线程实现抓取数据存入数据库的方法
2018/06/22 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
2019/10/30 Python
Django xadmin开启搜索功能的实现
2019/11/15 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
2019/12/13 Python
python Plotly绘图工具的简单使用
2020/03/03 Python
python实现飞船游戏的纵向移动
2020/04/24 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
2020/05/10 Python
Django:使用filter的pk进行多值查询操作
2020/07/15 Python
利用Python的folium包绘制城市道路图的实现示例
2020/08/24 Python
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
YSL圣罗兰美妆官方旗舰店:购买YSL口红
2018/04/16 全球购物
施华洛世奇新加坡官网:SWAROVSKI新加坡
2020/10/06 全球购物
C#如何调用Windows程序打开一个文档
2014/12/26 面试题
中专毕业自我鉴定
2013/10/16 职场文书
岗位竞聘演讲稿范文
2014/04/24 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
ObjectMapper 如何忽略字段大小写
2021/06/29 Java/Android