我试图劫持对我的类的所有调用,并将它们传递给我在类中选择的方法。你知道吗
我的班级到目前为止:
class Klass(object):
def __getattribute__(self, name):
if name == '_dummy_func':
return object.__getattribute__(self, name)
return object.__getattribute__(self, 'dummy_func')
def _dummy_func(self):
print 'dummy func called!'
当我这么做的时候:
cls = Klass()
cls.foo()
但在尝试这样做时摔倒了:
cls = Klass()
cls.foo.bar()
因为dummy_func
没有属性bar
。你知道吗
我试图通过检查name
是否是here所描述的函数来捕获__getattribute__()
中的嵌套行为,但是它是一个字符串而不是实际的变量。你知道吗
有没有办法从内部抓住这个问题?你知道吗
不要返回一个伪函数,只需返回一个伪对象,该对象可通过
__call__
方法调用,并反过来定义__getattr__
,以便在请求属性时返回另一个伪对象:现在可以根据
_dummy_func
的完整路径应用逻辑。您甚至可以使用提供的参数和关键字。你知道吗相关问题 更多 >
编程相关推荐