前言:一般情况下,这样的编程是会出现问题的,一旦某些数值在子类__init__方法里初始化时,就可能会导致程序崩溃。
背景:
开发QT,使用QT设计师进行界面设计,但是组件的功能不满足需要,因此需要对组件进行修改。
说一下使用条件:
1、子类没有在__init__里有任何操作。
2、父类的创建、实例化不方便改动,只能对实例化后的值进行操作。
def remake_parent_instance(parent, child):
"""
将子类方法赋值给父类实例
parent: 父类的实例
child: 子类
"""
for method_name in dir(child):
if callable(getattr(child, method_name)) and not method_name.startswith("__"):
# 绑定方法
setattr(parent, method_name, types.MethodType(getattr(child, method_name), parent))
return parent
慎用!!!