接口類
首先要知道的就是,不管是接口類還是抽象類,都是一種設計模式,是面對對象開發規范
而這種設計模式是java提出來的,java還有很多類似的東西被其它編程語言沿用
接口類是java為了實現多繼承,設計的一個概念
python原生並沒有接口類這一概念,但是為了實現接口隔離原則,而划分出來的
接口隔離原則:
使用多個專門的接口,而不使用單一的總接口,即客戶端不應該依賴那些不需要的接口
因為python天生能實現多繼承,所以並沒有接口類
應該算符合原則,強行區分出來這么一類吧
from abc import abstractmethod,ABCMeta #這里是為了實現接口類調用的模塊 class Payment(metaclass=ABCMeta): #在這里聲明metaclass=ABCMeta @abstractmethod #然后這里一個語法糖調用abstractmethod,就聲明這個類是接口類 def pay(self,money):pass
一但聲明一個接口類,接口類中的所有方法都必須不能實現
抽象類
抽象類也是面對對象開發規范
一般情況下單繼承能實現的功能都是一樣的
多繼承的情況憂郁功能比較復雜,所以不容易抽象出相同的功能能的具體實現寫在父類中
python中支持抽象類:一般情況下 單繼承
且可以實現python代碼
抽象類和接口類都不能實例化
import abc #利用abc模塊實現抽象類 class All_file(metaclass=abc.ABCMeta): all_type='file' @abc.abstractmethod #定義抽象方法,無需實現功能 def read(self): '子類必須定義讀功能' with open('filaname') as f: pass
class Txt(All_file): #子類繼承抽象類,但是必須定義read和write方法 def read(self): print('文本數據的讀取方法')
wenbenwenjian=Txt() print(wenbenwenjian.read())
文本數據的讀取方法