• 多重继承


    #前面讲的是单继承,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...
    #这样,通过上面的多重继承,一个子类就可以继承多个父类,同时获得多个父类所有非私有功能。
     
     
     
     
     
     
     
     
  • 相关阅读:
    修改mysql数据库字段内容默认值为当前时间
    报错 raise MigrationSchemaMissing("Unable to create the django_migrations table (%s)" % exc)
    python标准库之ConfigParser模块读写配置文件
    使用xshell连接liunx服务器遇到的问题( Connection failed)
    linux学习笔记(四)
    本地项目上传到github
    Java 获取昨天、前天时间
    Kibana 启动报错 Error: Unable to write Kibana UUID file, please check the uuid.server configuration value in kibana.yml
    Mybatis foreach 标签的使用
    RabbitMQ 延时队列
  • 原文地址:https://www.cnblogs.com/DLHe/p/8027402.html
Copyright © 2020-2023  润新知