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
方法都不起作用。