能否在仅知道装饰器,而不知道被装饰函数的情况下运行被装饰的函数。

Python装饰器

能否在仅知道装饰器,而不知道被装饰函数的情况下运行被装饰的函数。

例如下方test,test2函数被decoration装饰,我希望在运行时只要是被decoration装饰的函数就运行。

# 装饰器
def decoration(func):
    def inner():
        print("before")
        func()
        print("after")

    return inner

@decoration
def test():
    print("test")

@decoration
def test2():
    print("test2")

# 装饰器
def decoration(func):
    def inner():
        print("before")
        func()
        print("after")

    return inner


@decoration
def test1111():
    print("test")


@decoration
def test1112():
    print("test2")

if __name__ == '__main__':
    res = dict(decoration.__globals__)
    for r in res:
        if res[r] is None:
            continue
        if 'decoration.<locals>' in str(res[r]):
            print(eval(r)())

解决了,你看下