小编Vik*_*kas的帖子

如何拦截实例方法调用?

我正在寻找一种方法来拦截MyWrapper下面的类中的实例方法调用:

class SomeClass1:
    def a1(self):
        self.internal_z()
        return "a1"
    def a2(self):
        return "a2"
    def internal_z(self):
        return "z"

class SomeClass2(SomeClass1):
    pass

class MyWrapper(SomeClass2):

    # def INTERCEPT_ALL_FUNCTION_CALLS():
    #      result = Call_Original_Function()
    #      self.str += result  
    #      return result  


    def __init__(self):
        self.str = ''
    def getFinalResult(self):
        return self.str

x = MyWrapper()
x.a1()
x.a2()
Run Code Online (Sandbox Code Playgroud)

我想通过我的包装类拦截所有函数调用.在我的包装器类中,我想跟踪所有结果字符串.

result = x.getFinalResult()
print result == 'a1a2'
Run Code Online (Sandbox Code Playgroud)

python function call instance getattr

12
推荐指数
1
解决办法
4840
查看次数

标签 统计

call ×1

function ×1

getattr ×1

instance ×1

python ×1