Python為什么要用抽象類(abc模塊)?


原文: https://www.cnblogs.com/Black-rainbow/p/9582826.html

1、抽象類概念

  抽象類是一個特殊的類,只能被繼承,不能實例化

2、為什么要有抽象類

  其實在未接觸抽象類概念時,我們可以構造香蕉、蘋果、梨之類的類,然后讓它們繼承水果這個基類,水果的基類包含一個eat函數。

  但是你有沒有想過,我們可以將香蕉、蘋果、梨實例化,去吃香蕉、蘋果、梨。但是我們卻不能將水果實例化,因為我們無法吃到叫水果的這個東西。

  所以抽象類中只能有抽象方法(沒有實現功能),該類不能被實例化,只能被繼承,且子類必須實現抽象方法。

3、抽象類的作用

  在不同的模塊中通過抽象基類來調用,可以用最精簡的方式展示出代碼之間的邏輯關系,讓模塊之間的依賴清晰簡單。

  抽象類的編程,讓每個人可以關注當前抽象類的方法和描述,而不需要考慮過多的實現細節,這對協同開發有很大意義,也讓代碼可讀性更高。

4、抽象類的使用

import abc  # 利用abc模塊實現抽象類

class File(metaclass=abc.ABCMeta):  # abc.ABCMeta是實現抽象類的一個基礎類
    @abc.abstractmethod  # 定義抽象方法,無需實現功能
    def read(self):
        pass

class Txt(File):  # 子類繼承抽象類,但是必須定義read方法將抽象類中的read方法覆蓋
    def read(self):
        print('文本數據的讀取方法')

txt1 = Txt()
txt1.read()
txt2 = File()
txt2.read()

運行結果如下:

result

顯然將抽象類實例化報錯了,得到了我們想要的結果.

5、abc模塊在Python2&3的兼容問題

為解決兼容性問題,我們需要引入six模塊

abc



MARSGGBO原創


如有意合作,歡迎私戳

郵箱:marsggbo@foxmail.com


2019-12-30 13:52:21




免責聲明!

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



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