一个子类可以有多个父类。这就叫多重继承。通过多重继承,一个子类就可以同时获得多个父类的所有功能。
1.1、Mixin
在设计类的继承关系时,通常,主线都是单一继承下来的。
通过多重继承,而给某个类添加额外功能。这种设计我们称为Mixin
定义 Mammal 类
class Mammal(Object):
pass
定义 Runable 类
class Runnable(object):
def run(self):
print('Running...')
定义 Dog类,多重继承
class Dog(Mammal, Runnable):
pass
注:
为了更好地看出继承关系,我们可以把Runnable改为RunnableMixIn
只允许单一继承的语言(如Java)不能使用MixIn的设计
1.2、Mixin 事例
Python自带了TCPServer和UDPServer这两类网络服务,而要同时服务多个用户就必须使用多进程或多线程模型,这两种模型由ForkingMixIn和ThreadingMixIn提供。通过组合,我们就可以创造出合适的服务来
ForkingMinin:多进程
ThreadingMaxin:多线程
编写一个多进程模式的TCP服务
class MyTCPServer(TCPServer, ForkingMixIn):
pass
编写一个多线程模式的UDP服务
class MyUDPServer(UDPServer, ThreadingMixIn):
pass
协程模型
class MyTCPServer(TCPServer, CoroutineMixIn):
pass
原文地址:http://blog.51cto.com/12758568/2116783