丨水木旦丨 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日

悬赏问题

  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统
  • ¥15 Questasim Error: (vcom-13)
  • ¥15 船舶旋回实验matlab
  • ¥30 SQL 数组,游标,递归覆盖原值
  • ¥15 为什么我的数据接收的那么慢呀有没有完整的 hal 库并 代码呀有的话能不能发我一份并且我用 printf 函数显示处理之后的数据,用 debug 就不能运行了呢
  • ¥20 gitlab 中文路径,无法下载
  • ¥15 用动态规划算法均分纸牌
  • ¥30 udp socket,bind 0.0.0.0 ,如何自动选取用户访问的服务器IP来回复数据