多重继承

多重继承

大家好,又见面了,我是全栈君。

#前面讲的是单继承,Python还支持多重继承。多重继承的类定义如下:
1 class DerivedClassName(Base1,Base2,Base3):
2          <statement-1>
3         .
4         .
5         . 
6          <statement-N>

#可以看到,多重继承就是有多个基类(父类或超类)。
#需要注意圆括号中父类的顺序,若父类中有相同的方法名,在子类使用时未指定,Python会从左到右搜索。若方法在子类中未找到,则从左到右查找父类中是否包含方法。
#继续以前面的Animal类为例,假设要实现4种动物:Dog(狗)、Bat(蝙蝠)、Parrot(鹦鹉)、ostrich(鸵鸟)。
#如果按照哺乳动物和鸟类分类,我们可以设计按哺乳动物分了的类层次图,如图1。如果按照“会跑”和“会飞”分类,我们可以设计按行为功能分类的类层次图,如图2。
#如果要把上面的两种分类都包含进来,就得设计更多层次:
#哺乳类:包含会跑的哺乳类和会飞的哺乳类。
#鸟类:包含会跑的鸟类和会飞的鸟类。
多重继承
多重继承
多重继承
#如果还要增加“宠物类”和“非宠物类”,类的数量就会呈指数增长,显然这样设计是不可行的。
#正确的做法是采用多重继承。首先,主要的类层次仍按照哺乳类的鸟类设计,设计代码如下:
 1 #! /usr/bin/python
 2 #-*-coding:UTF-8-*-
 3 #class_多重继承
 4 
 5 class Animal(object):
 6     pass
 7 
 8 #大类:
 9 class Mammal(Animal):
10     pass
11 
12 class Bird(Animal):
13     pass
14 
15 #各种动物:
16 class Dog(Mammal):
17     pass
18 
19 class Bat(Mammal):
20     pass
21 
22 class Parrot(Mammal):
23     pass
24 
25 class Ostrich(Mammal):
26     pass

#接下来,给动物加上Runnable和Flyable功能。我们先定义好Runnable和Flyable类:
1 class Runnable(object):
2     def run(self):
3         print('Is Running...')
4 
5 class Flyable(object):
6     def fly(self):
7         print('Is Flying...')

#大类定义好后,对需要Runnable功能的动物对Runnable的继承,如Dog:
1 class Dog(Mammal,Runnable):    
2         pass

#对需要Flyable功能的动物添加对Flyable的继承,如Bat:
1 class Bat(Manmmal,Flyable):
2         pass

#执行如下语句:
1 dog=Dog
2 dog.run

#执行结果如下:
1 D:\Pythonworkspace>python class_多重继承.py
2 Is Running...

#这样,通过上面的多重继承,一个子类就可以继承多个父类,同时获得多个父类所有非私有功能。

 
 
 
 
 
 
 
 

转载于:https://www.cnblogs.com/DLHe/p/8027402.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107842.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JVM垃圾回收算法与参数配置

    JVM垃圾回收算法与参数配置引用计数法这是个古老而经典的垃圾收集算法 其核心就是在对象被其他所引用时计数器 1 而当引用失效时 1 但是这种方式有非常严重的问题 无法处理循环引用的情况 还有就是每次进行加减操作比较浪费系统性能 标记清除法分为标记和清除两个阶段进行处理内存中的对象 当然这种方式也有非常大的弊端 就是空间碎片问题 垃圾回收后的空间不连续 不连续的内存空间工作效率低于连续的内存空间 复制算法 java

    2025年9月28日
    3
  • windows无法打开图片显示内存不足_Windows图片和传真查看器

    windows无法打开图片显示内存不足_Windows图片和传真查看器解决Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足解决Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足问题问题分析解决办法一解决办法二解决Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足系统:Win10问题最近在使用Windows照片查看器打开一个jpg文件的时候异常Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足。请关闭一些目前没有使用的程序或者释放部分硬盘空间(如果硬盘几乎已满)

    2025年7月24日
    3
  • 电容类别及封装形式_电容的种类和应用范围

    电容类别及封装形式_电容的种类和应用范围按介质分为:陶瓷、云母、纸质、薄膜、电解电容电解电容一般铝电解电容和钽电容,单片机晶振旁边的是独石电容1法拉=103毫法=106微法=109纳法=1012皮法;1pf=10-3nf=10-6uf=10-9mf钽电容封装:电解电容插件封装…

    2022年8月22日
    6
  • 办公小贴士之:Office 2010截图有妙招

    办公小贴士之:Office 2010截图有妙招

    2022年3月11日
    41
  • 两个pdf怎么打印到一张纸的正反面_pdf打印成小册子页数设置

    两个pdf怎么打印到一张纸的正反面_pdf打印成小册子页数设置没有打印预览费劲。

    2025年9月19日
    7
  • centos7设置go代理

    centos7设置go代理wgethttps://dl.google.com/go/go1.10.3.linux-amd64.tar.gztar-C/usr/local-zxvfgo1.10.3.linux-amd64.tar.gzvim/etc/profileexportGOROOT=/usr/local/goexportPATH=$PATH:$GOROOT/binexportGOPROXY=https://goproxy.cnsource/etc/profilegoversion..

    2022年7月26日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号