# 这是学习廖雪峰老师python教程的学习笔记


一个子类可以有多个父类。这就叫多重继承。通过多重继承,一个子类就可以同时获得多个父类的所有功能。

1.1Mixin

在设计类的继承关系时,通常,主线都是单一继承下来的。

通过多重继承,而给某个类添加额外功能。这种设计我们称为Mixin

    1、定义 Mammal

class Mammal(Object):

    pass

    2、定义 Runable

class Runnable(object):

    def run(self):

        print('Running...')

    3、定义 Dog类,多重继承

class Dog(Mammal, Runnable):

    pass

注:

  • 为了更好地看出继承关系,我们可以把Runnable改为RunnableMixIn

  • 只允许单一继承的语言(如Java)不能使用MixIn的设计

 

1.2Mixin 事例

Python自带了TCPServer和UDPServer这两类网络服务,而要同时服务多个用户就必须使用多进程或多线程模型,这两种模型由ForkingMixInThreadingMixIn提供。通过组合,我们就可以创造出合适的服务来

 

  • ForkingMinin:多进程

  • ThreadingMaxin:多线程

 

    1、编写一个多进程模式的TCP服务

class MyTCPServer(TCPServer, ForkingMixIn):

    pass

    2、编写一个多线程模式的UDP服务

class MyUDPServer(UDPServer, ThreadingMixIn):

    pass

    3、协程模型

class MyTCPServer(TCPServer, CoroutineMixIn):

    pass