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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM