一日一技:在 Python 里面如何實現一個抽象類
在某個在線教育的網站上設計模式相關的課程中,某老師說 Python 不支持抽象類和接口。
但實際上,Python 支持抽象類。Python 自帶的abc模塊用于實現抽象類相關的定義和操作。
我們通過一個簡單的例子來說明,如何在 Python 中實現抽象類:
- from abc import ABC, abstractmethod
- class People(ABC):
- @abstractmethod
- def walk(self):
- pass
- @abstractmethod
- def eat(self):
- pass
- def dance(self):
- print('我正在跳舞')
從abc模塊導入ABC類,和abstractmethod抽象方法裝飾器。基于ABC類可以實現一個抽象類。通過@abstractmethod裝飾一個方法,讓它成為一個抽象方法。抽象方法在子類中必需被實現。
抽象類不能被實例化,所以我們實例化一下,可以看到這里報錯了,如下圖所示:
我們再看一下,如果繼承抽象類,但是沒有實現其中的某個抽象方法,也會導致報錯。如下圖所示:
當我們把所有抽象方法都實現了以后,子類就能夠正常初始化了,如下圖所示:
抽象類People中的dance不是抽象方法,所以子類不需要覆蓋。抽象類是軟件開發中一個非常重要的概念,通過定義抽象類,我們可以約定子類必需實現的方法。當我們一個類有幾十上百個方法時,用抽象方法來防止子類漏掉某些方法是非常方便的做法。

































