我有几个不同类型的对象(不同的函数名称,不同的签名),我猴子修补它们以有一种通用的方式从不同的函数访问它们。简而言之,有一个调度程序接收我要修补的对象,并根据对象类型调用不同的修补程序。修补程序将为对象添加方法:
def patcher_of_some_type(object):
def target(self, value):
# do something and call self methods
object.target = types.MethodType(target, object)
# many more of these
随着程序变得越来越复杂,围绕对象(或对象类)进行包装似乎是更好的主意。一些修补程序共享公共代码或相互关联。但我不控制对象的创建,也不控制类的创建。我只得到对象。即使我能做到这一点,我也只想包装(或修补)某些对象,而不是全部。
一种解决方案可能是将基类添加到现有对象,但我不确定这是多么可维护和安全。还有其他解决方案吗?