Python抽象類(abc模塊)

一、抽象類概念

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

二、爲何要有抽象類

  其實在未接觸抽象類概念時,咱們能夠構造香蕉、蘋果、梨之類的類,而後讓它們繼承水果這個基類,水果的基類包含一個eat函數。函數

  可是你有沒有想過,咱們能夠將香蕉、蘋果、梨實例化,去吃香蕉、蘋果、梨。可是咱們卻不能將水果實例化,由於咱們沒法吃到叫水果的這個東西。spa

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

三、抽象類的做用

  在不一樣的模塊中經過抽象基類來調用,能夠用最精簡的方式展現出代碼之間的邏輯關係,讓模塊之間的依賴清晰簡單。blog

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

四、抽象類的使用

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

運行結果以下:開發

顯然將抽象類實例化報錯了,獲得了咱們想要的結果class

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

  爲解決兼容性問題,咱們須要引入six模塊import

相關文章
相關標籤/搜索