丨水木旦丨 2022-08-08 18:53 采纳率: 100%
浏览 15
已结题

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

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")
  • 写回答

1条回答 默认 最新

  • kakaccys 2022-08-09 08:35
    关注
    
    # 装饰器
    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)())
    

    解决了,你看下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月27日
  • 已采纳回答 11月19日
  • 创建了问题 8月8日

悬赏问题

  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名