python 接口类抽象类多态

Posted -有风来

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 接口类抽象类多态相关的知识,希望对你有一定的参考价值。

参考https://www.cnblogs.com/Fantac/p/11481114.html

 

接口类和抽象类总结

在python中没有接口类,但有抽象类;abc模块中的metaclass = ABCMeta,@abstractmethod它的本质是做代码的规范用的,希望子类中能实现父类名字完全一样的方法

接口类和抽象类:

从java的角度上看是有区别的,java本来就支持单继承所以就有了抽象类;java没有多继承,所以为了接口隔离原则,设计了接口这个概念,支持多继承了

而python它既支持单继承也支持多继承,所以对于接口类和抽象类的区别就不会那么明显了,甚至在python中没有内置接口类

 

多态

多态指的是一类事物有多种形态

python天生支持多态

from abc import abstractmethod,ABCMeta
class Payment(metaclass=ABCMeta):               #支付方式类
    @abstractmethod
    def pay(self,money):
        pass

class Wechat(Payment):                          #支付方式---微信支付
    def pay(self,money):
        print(\'已经用了微信支付了%s元\'%money)
class Alipay(Payment):                          #支付方式---支付宝支付
    def pay(self,money):
        print(\'已经用了支付宝支付了%s元\'%money)
class Apple(Payment):                           #支付方式---苹果支付
    def pay(self,money):
        print(\'已经用了支付宝支付了%s元\'%money)

多态性

就是虽然是一类东西但是它们执行的是相同的方法但是做的是不同的事,比如微信它用的是微信支付、支付宝它用的是支付宝支付、苹果支付它用的是苹果支付...

鸭子类型

python语言里面有一个鸭子类型的概念,而在某些其他的属于强类型语言,用的是多态

鸭子类型:不崇尚根据继承所得来的相似,我只是自己实现我自己的代码就可以了,如果有两个类它们刚好相似,并不产生父类的子类的兄弟关系,那这就是鸭子类型。像list、tuple这种相似,是自己写代码的时候约束的,而不是通过父类约束的

以上是关于python 接口类抽象类多态的主要内容,如果未能解决你的问题,请参考以下文章

接口与抽象类 多态

Python_015(面向对象(接口类,抽象类,多态,封装)

Python基础-接口与归一化设计抽象类继承顺序子类调用父类,多态与多态性

day21接口类和抽象类,隔离原则,开放封闭原则,多态

第二十五天接口多态

Python全栈之路系列----之-----面向对象4接口与抽象,多继承与多态)