class 類繼承


以下將就 Python 繼承 多重繼承的使用及父子關係,源代碼的重新定義 重新實現進行闡述。

  1. 代碼繼承

  2. Python 繼承僅作用於其直係子級,旁係親屬不屬於此範疇。

    因此在重新定義 重新實現某些源代碼時,也必須是直係親屬關係。

    在 Python 中,有時必須繼承對象 object 或作為父級的子級,某些功能纔可以正常使用。

  3. 多重繼承

  4. 一次同時繼承多個父級類。

    注意繼承父級的先後順序,變量 參數的傳遞次序 類型。

    以第一繼承父級為主,其它繼承父級補充相關功能、函數、變量。

    若還想跨類定義修改某些變量,請使用容器類型作為要傳遞的參數。

    PyQt5 對多重繼承的支持比 PySide2 更優,如 __init__() 方法 PySide2 隻支持第一繼承。

  5. 重新實現

  6. 代碼的重新定義 重新實現,在所有麵嚮對象的編程語言編程過程中,很常見。

    譬如:同名重新定義 重新實現某個類、某個類函數、某個類變量,以達成個性化某個類的目地。

    當調用子級時,子級下的同名類函數、同名類變量工作,父級下的同名類函數、同名類變量被子級重名覆蓋不工作。

    當調用父級時,父級下的同名類函數、同名類變量工作;此時,子級下的不在作用範圍內就不工作。

    若一個類涉及到多種應用場景、多種用途 (或邏輯過於復雜) 時,重新定義 (或重新實現) 就在所難免。

    若感覺大腦難於區分上下文邏輯 (或算法要求) 需要適當細分時,重新定義 (或重新實現) 也有必要。

  7. 抽象簡化

  8. 類的繼承可達成類細分、功能細分、應用場景細分、邏輯細分、等目的。

    當細分類時還能抽象齣某些共同特徵,適當的細分、抽象能簡化代碼邏輯,使代碼更人性化、更利於調試。

  9. 術語翻譯

  10. 在開發多語言 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 種情況的術語提取。

    注意:

    若在源代碼開發中一個類同另一個類要比較相同本地化字符串,若一個類有本地化而另一個目前沒有本地化,那麼,這種比較可能不正常 (或不正確)。

另請參閱:

Python 關鍵詞 模塊名

版權聲明: 本文為獨傢原創稿件,版權歸 樂數軟件 ,未經許可不得轉載。