以下將就 Python 繼承 多重繼承的使用及父子關係,源代碼的重新定義 重新實現進行闡述。
Python 繼承僅作用於其直係子級,旁係親屬不屬於此範疇。
因此在重新定義 重新實現某些源代碼時,也必須是直係親屬關係。
在 Python 中,有時必須繼承對象 object 或作為父級的子級,某些功能纔可以正常使用。
一次同時繼承多個父級類。
注意繼承父級的先後順序,變量 參數的傳遞次序 類型。
以第一繼承父級為主,其它繼承父級補充相關功能、函數、變量。
若還想跨類定義修改某些變量,請使用容器類型作為要傳遞的參數。
PyQt5 對多重繼承的支持比 PySide2 更優,如 __init__() 方法 PySide2 隻支持第一繼承。
代碼的重新定義 重新實現,在所有麵嚮對象的編程語言編程過程中,很常見。
譬如:同名重新定義 重新實現某個類、某個類函數、某個類變量,以達成個性化某個類的目地。
當調用子級時,子級下的同名類函數、同名類變量工作,父級下的同名類函數、同名類變量被子級重名覆蓋不工作。
當調用父級時,父級下的同名類函數、同名類變量工作;此時,子級下的不在作用範圍內就不工作。
若一個類涉及到多種應用場景、多種用途 (或邏輯過於復雜) 時,重新定義 (或重新實現) 就在所難免。
若感覺大腦難於區分上下文邏輯 (或算法要求) 需要適當細分時,重新定義 (或重新實現) 也有必要。
類的繼承可達成類細分、功能細分、應用場景細分、邏輯細分、等目的。
當細分類時還能抽象齣某些共同特徵,適當的細分、抽象能簡化代碼邏輯,使代碼更人性化、更利於調試。
在開發多語言 GUI (圖形用戶界麵) 應用程序時,推薦不更名繼承父級類。
但有些時候,更名繼承類是必須的 (譬如:若對用途、場景、目的有強烈要求)。
對於 Qt,更名繼承父級類需在子類中重新添加要翻譯術語。
如定義以下不調用函數,重新添加要翻譯的重復術語:
def internationalization(self): self.tr("&File") self.tr("&Edit") self.tr("&View")
或編寫一個不調用容器,重新添加要翻譯的重復術語:
internationalization = [ self.tr("&File"), self.tr("&Edit"), self.tr("&View")]
反正從不調用,也可采用以下形式減少在使用中的代碼量:
#def internationalization(self): #self.tr("&File") #self.tr("&Edit") #self.tr("&View")
Qt Linguist 隻支持前 2 種情況的術語提取,而 Qt TS 文件提取 及相關工具,支持全部 3 種情況的術語提取。
注意:
若在源代碼開發中一個類同另一個類要比較相同本地化字符串,若一個類有本地化而另一個目前沒有本地化,那麼,這種比較可能不正常 (或不正確)。
另請參閱:
版權聲明: 本文為獨傢原創稿件,版權歸 樂數軟件 ,未經許可不得轉載。