Python - python里有类似Java的接口(interface)吗?

参考

  1. https://stackoverflow.com/questions/2124190/how-do-i-implement-interfaces-in-python
  2. https://stackoverflow.com/questions/372042/difference-between-abstract-class-and-interface-in-python
  3. http://www.cnblogs.com/allen2333/p/8878542.html

总结

  1. 没有。在Python中没必要使用类似Java的interface。因为Python里有多继承和使用鸭子类型。
  2. 在Python中,协议就是接口。例如上下文管理协议,只要实现了对应的_enter_, __exit__方法就实现了这个上下文管理协议。
  3. Java中的接口是抽象类的特殊情况,抽象类:对一类事物的抽象。接口:对某一行为抽象。Java中的接口里面全部都是抽象方法。
  4. 在Python中,可以用抽象类实现接口
from abc import ABCMeta,abstractmethod

class Payment(metaclass=ABCMeta):
    @abstractmethod                 #调用@abstractmethod规定子类必须有pay方法
    def pay(self,money):
        pass


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


obj = Wechatpay()
posted @ 2018-05-26 12:35  Rocin  阅读(8304)  评论(0编辑  收藏