我知道類的繼承性。一個超類所擁有的每一個方法都會被繼承給它的子類。因此,除非特別需要,子類不需要再次實作繼承的方法。
但是我想確保子類重新實作超類的所有方法。問題的關鍵在于,同一組中的所有類(比如繼承了同一個超類的類)都必須單獨實作相同的方法。這些類需要一些結構來指定哪些方法必須被實作。
我應該怎么做?
我應該怎么做?
uj5u.com熱心網友回復:
>。在面向物件的編程中,這可以通過使用介面來實作。你必須匯入Python介面模塊,然后讓你的類繼承于這個模塊。這里有一個指南,有一些實際的例子。https://www.geeksforgeeks.org/python-interface-module/#:~:text=In python, interface is defined using python class,interface are implemented using implementer decorator on class/a.
。uj5u.com熱心網友回復:
在C 中,你會希望在你的基類上建立純虛擬方法,在沒有實作該方法的子類上提示一個編譯時錯誤,這就是通常定義介面的方式。
Python提供了abstractmethod裝飾器(見這里。 https://docs.python.org/3/library/abc.html#abc.abstractmethod)以達到類似目的。 與C 不同的是,你可以用沒有實作基類abstractmethod的子類來運行你的程式,但子類在實體化時將拋出一個TypeError例外。
這里有一個例子。https://stackoverflow.com/a/26458670/5932855
uj5u.com熱心網友回復:
在Python中使用抽象的基類。創建一個從ABC擴展(子類)的類定義。這是一個抽象類,類似于其他語言中的介面,例如Java,如果需要的話,它還可以實作具體方法。要創建一個存根方法,將其標記為@abstractmethod(或類似于類和靜態方法的裝飾器)并添加一個注釋塊;不需要定義方法。要創建一個具體的方法,只需在該方法下添加邏輯,就像你通常對任何類所做的那樣。然后你可以讓你的具體子類從這個抽象類中擴展出來,解釋器將默認要求你實作所有宣告的抽象方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/328104.html
標籤:
