获取装饰器中呼叫者的姓名?

时间:2020-09-29 19:11:23

标签: python

我有以下装饰器:

my_decorator.py

import functools

def caller_name():
    frm = inspect.stack()[1]
    mod = inspect.getmodule(frm[0])
    return mod.__name__

class MyClass:
    def __init__(self, bs_servers):
        self.caller = caller_name() # Get the caller's name
        print(self.caller)

    def __call__(self):
        def decorator(f):
            @functools.wraps(f)
            def wrap(*arg, **kwargs):
                #....
            return wrap
        return decorator

这是用法:

my_module.py

deco = MyClass(...)

@deco() # Need the self.caller be 'my_module.py'
def test():
    return 1

但是,self.caller的值为my_decorator.py而不是my_module.py

0 个答案:

没有答案