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 File Extract 及相关工具,支持全部 3 种情况的术语提取。

    Note:

    若在源代码开发中一个类同另一个类要比较相同本地化字符串,若一个类有本地化而另一个目前没有本地化,那么,这种比较可能不正常 (或不正确)。

See also:

Python Keyword, Module Name

Copyright Notice: This article is exclusive original manuscripts, copyrighted by Happy Digits Software , shall not be reproduced without permission.