參考
- https://stackoverflow.com/questions/2124190/how-do-i-implement-interfaces-in-python
- https://stackoverflow.com/questions/372042/difference-between-abstract-class-and-interface-in-python
- http://www.cnblogs.com/allen2333/p/8878542.html
總結
- 沒有。在Python中沒必要使用類似Java的interface。因為Python里有多繼承和使用鴨子類型。
- 在Python中,協議就是接口。例如上下文管理協議,只要實現了對應的_enter_, __exit__方法就實現了這個上下文管理協議。
- Java中的接口是抽象類的特殊情況,抽象類:對一類事物的抽象。接口:對某一行為抽象。Java中的接口里面全部都是抽象方法。
- 在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()