1. 程式人生 > >19.1.4 裝飾器@abstractmethod

19.1.4 裝飾器@abstractmethod

1、@abstractmethod

抽象方法是父類的一個方法, 父類沒有實現這個方法, 父類是不可以例項化的. 子類繼承父類, 子類必須實現父類定義的抽象方法, 子類才可以被例項化. Python中的abc提供了@abstractmethod裝飾器實現抽象方法的定義。

 

2、Python中的介面, 抽象類, 抽象函式

Python中的介面是個弱概念, 從Java中的概念延伸而來, Python中通過抽象類和抽象方法來實現一個介面, 例如Python3中, class 類繼承的 abc.ABC 即為抽象類, @abstractmethod

 裝飾器使其裝飾的函式成為抽象函式

一般情況下, Python多在單繼承的情況下使用抽象類。

 

見下圖的程式碼,基類Foo的fun方法被@abstractmethod裝飾了,所以Foo不能被例項化;子類SubA沒有實現基類的fun方法也不能被例項化;子類SubB實現了基類的抽象方法fun所以能例項化