Python 多态浅析

来源:互联网 发布:监控qq聊天记录软件 编辑:程序博客网 时间:2024/05/21 06:53

多态是面向对象语言的一个基本特性,多态意味着变量并不知道引用的对象是什么,根据引用对象的不同表现不同的行为方式。在处理多态对象时,只需要关注它的接口即可,python中并不需要显示的编写(像Java一样)接口,在使用对象的使用先假定有该接口,如果实际并不包含,在运行中报错。原文链接点击打开链接

class HandGun():
    def __init__(self):
        pass
    def fire(self):
        print("Hand fire")
        pass
    pass
class Carbine():
    def __init__(self):
        pass
    def fire(self):
        print("Carbine fire")
        pass
    pass


class gunFactor():
    def __init__(self,gun_type):
        self.gun_type=gun_type
        pass
    def produce(self):
        if HandGun == self.gun_type:
            return HandGun()
        else:
            return Carbine()
        pass
    pass
fa = gunFactor(HandGun)
gun=fa.produce()
gun.fire()


可以看到跟一般的静态语言相比,python并没有在语言级别来保证接口的正确性,只能依靠文档、代码来保证(可以在代码中检查接口是否存在,hasattr(gun,'fire'))

0 0
原创粉丝点击