Python:任意类修饰符

时间:2017-10-10 10:09:27

标签: python class inheritance constructor modifier

虽然我设法为我的问题构建了一个可管理的答案:

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部分)

0 个答案:

没有答案