zoukankan      html  css  js  c++  java
  • 多重继承

    #前面讲的是单继承,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...
    #这样,通过上面的多重继承,一个子类就可以继承多个父类,同时获得多个父类所有非私有功能。
     
     
     
     
     
     
     
     
  • 相关阅读:
    终端提示“ timed out waiting for input: auto-logout”
    shell-日志统计
    spring-file-upload-exceeds its maximum permitted size of 1048576 bytes
    全面质量管理 TQM、六西格玛、CMMI、ISO9000 关系
    GitLab: You are not allowed to force push code to a protected branch on this project.
    go 多版本管理
    glide install error
    js tab栏切换
    ES6 class命令浅识
    ES6 const命令
  • 原文地址:https://www.cnblogs.com/DLHe/p/8027402.html
Copyright © 2011-2022 走看看