以下将就 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 File Extract 及相关工具,支持全部 3 种情况的术语提取。
Note:
若在源代码开发中一个类同另一个类要比较相同本地化字符串,若一个类有本地化而另一个目前没有本地化,那么,这种比较可能不正常 (或不正确)。
See also:
Copyright Notice: This article is exclusive original manuscripts, copyrighted by Happy Digits Software , shall not be reproduced without permission.