内省以获取方法上的装饰器名称?

2023-11-25

我试图弄清楚如何获取方法上所有装饰器的名称。我已经可以获得方法名称和文档字符串,但无法弄清楚如何获取装饰器列表。


我很惊讶这个问题这么老了,没有人花时间添加实际的内省方法来做到这一点,所以这里是:

您要检查的代码...

def template(func):
    def wrapper(*args, **kwargs):
        return func(*args, **kwargs)
    return wrapper

baz = template
che = template

class Foo(object):
    @baz
    @che
    def bar(self):
        pass

现在您可以检查以上内容Foo类有这样的东西......

import ast
import inspect

def get_decorators(cls):
    target = cls
    decorators = {}

    def visit_FunctionDef(node):
        decorators[node.name] = []
        for n in node.decorator_list:
            name = ''
            if isinstance(n, ast.Call):
                name = n.func.attr if isinstance(n.func, ast.Attribute) else n.func.id
            else:
                name = n.attr if isinstance(n, ast.Attribute) else n.id

            decorators[node.name].append(name)

    node_iter = ast.NodeVisitor()
    node_iter.visit_FunctionDef = visit_FunctionDef
    node_iter.visit(ast.parse(inspect.getsource(target)))
    return decorators

print get_decorators(Foo)

应该打印这样的东西......

{'bar': ['baz', 'che']}

或者至少当我用 Python 2.7.9 快速测试时是这样的:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

内省以获取方法上的装饰器名称? 的相关文章

  • xlrd.biffh.XLRDError:Excel xlsx 文件;不支持[重复]

    这个问题在这里已经有答案了 我正在尝试使用读取启用宏的 Excel 工作表pandas read excel与 xlrd 库 它在本地运行良好 但是当我尝试将其推送到 PCF 时 我收到此错误 2020 12 11T21 09 53 441
  • Python有条件求解时滞微分方程

    我在用dde23 of pydelay包来求解延迟微分方程 我的问题 如何有条件地编写方程 例如目标方程有两个选项 when x gt 1 dx dt 0 25 x t tau 1 0 pow x t tau 10 0 0 1 x othe
  • for 循环如何评估其参数

    我的问题很简单 Does a for循环评估它每次使用的参数 Such as for i in range 300 python 是否会为此循环的每次迭代创建一个包含 300 个项目的列表 如果是的话 这是避免这种情况的方法吗 lst ra
  • Python从int到string的快速转换

    我正在用 python 求解大量阶乘 并发现当我完成计算阶乘时 需要相同的时间才能转换为字符串以保存到文件中 我试图找到一种将 int 转换为字符串的快速方法 我将举一个计算和 int 转换时间的例子 我正在使用通用的 a str a 但感
  • Python在postgresql表中查找带有单引号符号的字符串

    我需要从 psql 表中查找包含多个单引号的字符串 我当前的解决方案是将单引号替换为双单引号 如下所示 sql query f SELECT exists SELECT 1 FROM table name WHERE my column m
  • 为什么我的代码不能根据字典解码加密字符串?

    我有一本字典 其中包含代表字母的键和值 例如一个简单的 DICT CODE b g n a p o x d t y 我收到了一个加密代码 并将该字符串转换为一个列表 其中每个项目都是一个单词 我需要根据字典中的项目来解决它 代码示例是 wo
  • 如何在 Python 3 中循环遍历集合,同时从集合中删除项目

    这是我的情况 我有一个list set 哪个并不重要 movieplayer我想调用的对象 preload 功能开启 该预加载函数可以立即返回 但希望将来返回一点 我想存储这个电影播放器 集合 表明它们尚未预加载 然后循环它们 调用prel
  • 可以用 Django 制作移动应用程序吗?

    我想知道我是否可以在我的网站上使用 Django 代码 并以某种方式在移动应用程序 Flutter 等框架中使用它 那么是否可以使用我现在拥有的 Django 后端并在移动应用程序中使用它 所以就像models views etc 是的 有
  • Pandas 滚动窗口 Spearman 相关性

    我想使用滚动窗口计算 DataFrame 两列之间的 Spearman 和 或 Pearson 相关性 我努力了df corr df col1 rolling P corr df col2 P为窗口尺寸 但我似乎无法定义该方法 添加meth
  • 动态 __init_subclass__ 方法的参数绑定

    我正在尝试让类装饰器工作 装饰器会添加一个 init subclass 方法到它所应用的类 但是 当该方法动态添加到类中时 第一个参数不会绑定到子类对象 为什么会发生这种情况 举个例子 这是可行的 下面的静态代码是我试图最终得到的示例 cl
  • Python 惰性迭代器

    我试图了解迭代器表达式如何以及何时被求值 以下似乎是一个懒惰的表达 g i for i in range 1000 if i 3 i 2 然而 这个在构造上失败了 g line strip for line in open xxx r if
  • 如何使用 sys.path.append 在 Python 中导入文件?

    我的桌面上有两个目录 DIR1 and DIR2其中包含以下文件 DIR1 file1 py DIR2 file2 py myfile txt 这些文件包含以下内容 file1 py import sys sys path append s
  • 由于 json 字符串化 dict 键导致数据丢失

    考虑下面的例子 gt gt gt import json gt gt gt d 0 potato 0 spud gt gt gt json dumps d 0 potato 0 spud gt gt gt json loads json d
  • 如何使用 Keras ImageDataGenerator 预测单个图像?

    我已经训练 CNN 对图像进行 3 类分类 在训练模型时 我使用 keras 的 ImageDataGenerator 类对图像应用预处理功能并重新缩放它 现在我的网络在测试集上训练得非常准确 但我不知道如何在单图像预测上应用预处理功能 如
  • 是否可以将 pd.Series 分配给无序 pd.DataFrame 中的列而不映射到索引(即不重新排序值)?

    在 Pandas 中创建或分配新列时 我发现了一些意外的行为 当我对 pd DataFrame 进行过滤或排序 从而混合索引 然后从 pd Series 创建新列时 Pandas 会重新排序该系列以映射到 DataFrame 索引 例如 d
  • 处理大文件的最快方法?

    我有多个 3 GB 制表符分隔文件 每个文件中有 2000 万行 所有行都必须独立处理 任何两行之间没有关系 我的问题是 什么会更快 逐行阅读 with open as infile for line in infile 将文件分块读入内存
  • 为什么 smtplib.SMTP().sendmail 不发送 DKIM 签名邮件

    我已经在服务器上设置了 postfix 以及 openDKIM 当我跑步时 echo Testing setup mail s Postfix test my email address 我收到电子邮件 邮件标题中有一个DKIM Signa
  • 更改 Python Cmd 模块处理自动完成的方式

    我有一个 Cmd 控制台 设置为自动完成 Magic the Gathering 收藏管理系统的卡牌名称 它使用文本参数在数据库中查询卡片 并使用结果自动完成 建议卡片 然而 这些卡片名称有多个单词 Cmd 会从last到行尾的空间 例如
  • 在 Django shell 会话期间获取 SQL 查询计数

    有没有办法打印 Django ORM 在 Django shell 会话期间执行的原始 SQL 查询的数量 Django 调试工具栏已经提供了此类信息 例如 5 QUERIES in 5 83MS但如何从 shell 中获取它并不明显 您可
  • python sklearn中的fit方法

    我问自己关于 sklearn 中拟合方法的各种问题 问题1 当我这样做时 from sklearn decomposition import TruncatedSVD model TruncatedSVD svd 1 model fit X

随机推荐

  • 如何在 Java 中使用正则表达式查找重复字符?

    谁能给我一个 Java 正则表达式来识别字符串中的重复字符 我只寻找立即重复的字符 它们可以是字母或数字 Example abcccde abcde Try w 1 The w匹配任何单词字符 字母 数字或下划线 并且 1 匹配第一组括号中
  • Javascript:未定义为函数参数

    On this page 它显示了一些示例代码 包含以下行 var Subject function window undefined 是什么undefined作为函数参数 这用于防止覆盖值undefined在非严格模式下 在非严格模式下
  • SendMessage,什么时候使用KEYDOWN,SYSKEYDOWN等?

    我正在编写一个应用程序 使用以下命令将击键发送到另一个应用程序SendMessage DllImport user32 dll public static extern int SendMessage IntPtr hWnd int Msg
  • C++11 lambda 到函数指针

    我开始使用 C 11 lambda 开发应用程序 并且需要将某些类型转换为函数指针 这在 GCC 4 6 0 中完美运行 void test puts Test test 我的问题是当我需要在 lambda 中使用函数或方法局部变量时 co
  • PrintWriter 和 DataOutputStream 有什么区别?

    我正在开发一个 Android 聊天室应用程序 我阅读了不同的教程 有些使用PrintWriter发送数据 有些使用DataOutputStream 这两者有什么区别 哪一个更适合聊天应用程序 来自java文档 A 数据输出流允许应用程序以
  • Django 中的 related_name 和 related_query_name 是什么?

    我对 django 框架中的代码有一个问题related name 和 related query name在 Django 中 请django专家解释一下django中的 related name 代码如下 相关名称 相关名称 Djang
  • 适合多个客户的 Android 构建配置

    我有一个 Android 应用程序需要交付给多个客户 对于每个客户 我都有不同的图形和配置 XML 文件 其中指定了功能和 URL 在构建时 我们应该能够指定应为其构建应用程序的客户 然后 应将适合指定客户端的资源 例如图像和运行时配置 内
  • 仅当字段不为 Null 时才验证

    I use JSR303 Spring Validation我有以下内容 Digits fraction 0 integer 15 private String tpMobile 验证说Must be number between 10 1
  • 如何在 Java 中解密 sha1 加密的字符串

    是否有可能解密一些之前用 Java 中的 SHA 1 算法加密的字符串 SHA1 是加密哈希函数 重点是您无法撤消它 如果可以反转哈希值 找到给定哈希值的输入 那么它就没有用处 如果您需要加密某些内容然后解密它 您应该使用加密功能 like
  • 如何将参数 n 传递给 printf("%nd", some_int);

    我们都知道在基于 C 的语言中 printf 11d some int 意味着在 11 个字符字段内右对齐 但是如果我想用动态变量替换这里的常量 11 我该怎么办 您可以使用 字符在其自己的参数中指定字段宽度 printf d some w
  • PHP 从多维数组创建消息线程的多维数组 (IMAP)

    我的问题如下 如果你往下看 你会看到有一个带有消息 ID 的数据结构 然后是包含消息详细信息的最终数据结构 这些详细信息应该从imap fetch overview 消息 ID 来自imap thread 问题是它没有将电子邮件详细信息放在
  • Firestore 如果文档不存在则创建文档,如果存在则跳过

    我想创建 Firestore 文档 如果它们不存在 如果它们确实存在 请跳过它们 不更新 这是流程 var arrayOfRandomIds array of 500 random numbers for var id of arrayOf
  • AWS Athena 上的 OFFSET

    我想在 AWS Athena 上运行查询LIMIT and an OFFSET条款 我认为前者受到支持 而后者不是 有没有办法使用其他方法来模拟此功能 Using OFFSET分页效率非常低 特别是对于像 Presto 这样经常需要执行全表
  • Dataflow/Apache Beam 在哪个阶段确认 pub/sub 消息?

    我有一个数据流流作业 其中 Pub Sub 订阅作为无限源 我想知道数据流在哪个阶段确认传入的发布 订阅消息 在我看来 如果在数据流管道的任何阶段抛出异常 消息就会丢失 另外 我想知道如何使用发布 订阅无界源编写数据流管道的最佳实践 以便在
  • R 编程:predict(),“预测”与“置信度”?

    无论如何学习 R 在只有 x 和 y 的简单回归中 我输入 predict data1 lm interval prediction and predict data1 lm interval confidence 我很困惑有什么区别 我在
  • Docker maven 插件 ClientProtocolException(Windows 10 使用 Docker Toolbox)

    我正在尝试使用 docker maven plugin 构建 docker 映像 由 spotify 提供 https github com spotify docker maven plugin 但事情并没有真正解决 起初我得到了这个例外
  • @WithMockUser 具有自定义用户实现

    我正在使用 spring OAuth2 和 JWT 令牌来保护应用程序 我正在延长org springframework security core userdetails为了向令牌添加一些附加属性 然后可以使用这些属性来执行授权 调用端点
  • 将 2D 数组转换为具有重叠步长的 3D 数组

    我将使用 NumPy 或本机函数将 2d 数组转换为包含前几行的 3d 数组 Input 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Output 7 8 9 4 5 6 1 2 3 10 11 12 7 8 9
  • 为什么 Microsoft 选择 stdcall 作为他们的 API 约定?

    有充分的理由吗 它们的内部函数 未导出 也是 stdcall 约定吗 它是对 32 位代码的 pascal 调用约定的改编 Pascal 是 OS 2 和 Windows 3 等 16 位操作系统的调用约定 为什么选择 pascal 有点猜
  • 内省以获取方法上的装饰器名称?

    我试图弄清楚如何获取方法上所有装饰器的名称 我已经可以获得方法名称和文档字符串 但无法弄清楚如何获取装饰器列表 我很惊讶这个问题这么老了 没有人花时间添加实际的内省方法来做到这一点 所以这里是 您要检查的代码 def template fu