Python 用dummy覆盖所有类方法

Python 用dummy覆盖所有类方法,python,python-3.x,Python,Python 3.x,我有一个类,它有自己的方法,例如: class Original(): def __init__(self, dummy=False): self.dummy = dummy def funcA(self): print('funcA') 我希望在变量dummy为true的情况下,所有来自原始类的定制函数(例如funcA)都变成dummy(即不执行任何操作,也不返回任何内容)。 我成功地完成了这样一个虚拟类: class Dummy(objec

我有一个类,它有自己的方法,例如:

class Original():
    def __init__(self, dummy=False):
        self.dummy = dummy

    def funcA(self):
        print('funcA')
我希望在变量
dummy
为true的情况下,所有来自原始类的定制函数(例如funcA)都变成dummy(即不执行任何操作,也不返回任何内容)。 我成功地完成了这样一个虚拟类:

class Dummy(object):
    def dummy(*args, **kwargs):
        pass

    def __getattr__(self, _):
        return self.dummy

a = Dummy()
a.asd()  # returns nothing
但是,如果变量
dummy
为False,我无法创建一个可写函数在其中工作的类,如果变量为True,这些函数就不能工作


需要帮忙吗

根据亚历克斯·霍尔的评论,他设法找到了答案。希望这对任何人都有帮助:

class Dummy(object):
    def __init__(self, isDummy):
        self.isDummy = isDummy

    def dummy(*args, **kwargs):
        pass

    def __getattribute__(self, item):
        if item in ['isDummy', 'dummy'] or self.isDummy is False:
            attr = object.__getattribute__(self, item)
            return attr
        else:
            return self.dummy

    def funcA(self):
        print('funcA')

print('Dummy:')
dummy = Dummy(isDummy=True)
dummy.funcA()  # returns nothing

print('---')
print('nonDummy:')
nonDummy = Dummy(isDummy=False)
nonDummy.funcA()  # prints 'funcA'

您将需要在原始类中重写
\uuuuuuuuGetAttribute\uuuuuu
(而不是
\uuuuuuuuGetAttr\uuuuuuuu
)。使用
\uuuuuuuuuuuuuGetAttribute\uuuuuuuuuuuuuu
我可以很好地完成无限递归循环!这是正确的解决方案,我很高兴能指导您自己找到它。请注意,它对任何
\uuuuuuuuuuuuuuuuuuu
方法都不起作用。