虽然我设法为我的问题构建了一个可管理的答案:
class A(object):
def __init__(self, B, *args, **kwargs):
''' Modifies input class B, rendering it a super class of class A'''
_parent = {}
method_list = [func for func in dir(self) if callable(getattr(self, func))]
for att in B.__dir__():
_parent[att] = B.__getattribute__(att)
if att not in method_list:
try:
self.__setattr__(att, B.__getattribute__(
att))
except:
pass
B.__init__(self, *args, **kwargs)
self.__parent__ = _parent
#add self variables here
def func(self):
#modify inherited func here
self.__parent__['func']()
#modify inherited func here
我不知道它是否一直有效,我想知道其他人是否有更好的解决方案(对其他语言来说相当微不足道)的问题。此外,此解决方案仅适用于Python3及更高版本(否则需要检查模块来替换callable
部分)