Python学习札记(三十八) 面向对象编程 Object Oriented Program 9

参考:多重继承

NOTE

#!/usr/bin/env python3

class Animal(object):
    def __init__(self, name):
        self.name = name
    def getname(self):
        print(self.name)

class Fly(object):
    def __init__(self):
        pass
    def getfly(self):
        print('could fly')

class Bird(Animal, Fly):
    pass

def main():
    b = Bird('bird')
    b.getname()
    b.getfly()

if __name__ == '__main__':
    main()
sh-3.2# ./oop10.py 
bird
could fly

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

1.MixIn

一般来说,继承的关系是主线单一继承下来的,如:

Animal -> Bird -> Bat

但是如果要加入其它额外的属性和方法,可以通过多重继承来实现,这种方式称为MixIn。

MixIn的目的就是给一个类增加多个功能,这样,在设计类的时候,我们优先考虑通过多重继承来组合多个MixIn的功能,而不是设计多层次的复杂的继承关系。

2.Python自带的很多库也使用了MixIn。

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

2017/3/5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值