python 接口類和抽象類


接口類

首先要知道的就是,不管是接口類還是抽象類,都是一種設計模式,是面對對象開發規范

而這種設計模式是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())

文本數據的讀取方法


免責聲明!

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



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