您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python中的拦截方法调用

Python中的拦截方法调用

像这样吗 这暗示着在您的方法添加装饰器(如果您愿意,也可以基于此创建一个显式装饰器):

class Foo(object):
    def __getattribute__(self,name):
        attr = object.__getattribute__(self, name)
        if hasattr(attr, '__call__'):
            def newfunc(*args, **kwargs):
                print('before calling %s' %attr.__name__)
                result = attr(*args, **kwargs)
                print('done calling %s' %attr.__name__)
                return result
            return newfunc
        else:
            return attr

当您现在尝试类似的方法

class Bar(Foo):
    def myFunc(self, data):
        print("myFunc: %s"% data)

bar = Bar()
bar.myFunc(5)

你会得到:

before calling myFunc
myFunc:  5
done calling myFunc
python 2022/1/1 18:47:20 有329人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶