python 多态性

对于弱类型的语言来说,变量并没有声明类型,因此,同一个变量完全可以在不同的时间引用不同的对象,当同一个变量在调用不同的方法时,完全可能呈现多种行为(具体呈现出哪种行为由该变量所引用的对象决定),这就是所谓的多态。从下面这个例子来体会python多态的优势。

class Dog(object):
    def dog_work(self):
        print('狗正在工作')


class SearchDog(Dog):
    def dog_work(self):
        print('搜救犬正在搜索生命')


class PoliceDog(Dog):
    def dog_work(self):
        print('警犬正在抓坏人')


class FlyDog(Dog):
    def dog_work(self):
        print('飞天犬正在飞')


class BlindDog(Dog):
    def dog_work(self):
        print('导盲犬正在领路')


class Person(object):
    def __init__(self, dog=None):
        self.dog = dog

    def work_with_dog(self):
        self.dog.dog_work()


sd = SearchDog()
pd = PoliceDog()
fd = FlyDog()
bd = BlindDog()

p = Person(bd)
p.work_with_dog()

同一个变量p在执行同一个方法时,由于p 指向的对象不同,因此它呈现不同的行为特征,这就是多态。
当程序涉及Dog 类的dog_work方法时,该方法所需要的参数是非常灵活的,程序为该方法传入的参数只要具有指定方法就行,至于该方法呈现怎样的行为特征,则完全取决于对象本身,这就大大提高了dog_work()方法的灵活性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值