Python_面向对象-多态篇

指的是一个类拥有多个形态,比如动物有多种形态:人、猫、狗……

import abc
class Animal(metaclass=abc.ABCMeta): #同一类事物:动物
    @abc.abstractmethod
    def talk(self):
        pass

class People(Animal): #动物的形态之一:人
    def talk(self):
        print('say hello')

class Dog(Animal): #动物的形态之二:狗
    def talk(self):
        print('say wangwang')

class Pig(Animal): #动物的形态之三:猪
    def talk(self):
        print('say aoao')

peo=People()
dog=Dog()
pig=Pig()

多态性:动物都拥有相同的方法talk,只不过是不同的动物去执行,而相同的方法而产生了不相同的结果。

使用多态的优点:

1. 增加可扩展性
2. 增加易懂性

因为都是调用相同方法,未来扩展不需要改变代码的调用。

鸭子类型

外观和功能一样的类型,那么就是鸭子类型:

class QQpay():
    def pay(self,money):
        print('使用qq支付了%s元'%money)

class Wechatpay():
    def pay(self,money):
        print('使用微信支付了%s元'%money)

鸭子类型是Python专属,它并不是一种方法、模块、函数之类的东东,而是大家口头上的一种默契,即 用相同的方法去完成功能一样的事,你用A方法去写一个东西,我也是A方法去写一个东西,他也是用A方法写一个东西。

 

发表评论