在python中获取函数调用者的信息

2023-11-24

我想获取有关 python 中特定函数的调用者的信息。例如:

class SomeClass():
    def __init__(self, x):
        self.x = x
    def caller(self):
        return special_func(self.x)

def special_func(x):
    print "My caller is the 'caller' function in an 'SomeClass' class."

用python可以吗?


是的sys._getframe()函数让您从当前执行堆栈中检索帧,然后您可以使用在inspect module;您将在以下地区寻找特定的当地人f_locals属性,以及对于f_code信息:

import sys
def special_func(x):
    callingframe = sys._getframe(1)
    print 'My caller is the %r function in a %r class' % (
        callingframe.f_code.co_name, 
        callingframe.f_locals['self'].__class__.__name__)

请注意,您需要小心检测在每个帧中找到的信息类型。

sys._getframe()返回一个框架对象,您可以通过以下方式链接整个堆栈f_back各有参考。或者您可以使用inspect.stack()功能生成带有附加信息的帧列表。

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

在python中获取函数调用者的信息 的相关文章

  • Django REST序列化器:创建对象而不保存

    我已经开始使用 Django REST 框架 我想做的是使用一些 JSON 发布请求 从中创建一个 Django 模型对象 然后使用该对象而不保存它 我的 Django 模型称为 SearchRequest 我所拥有的是 api view
  • InterfaceError:连接已关闭(使用 django + celery + Scrapy)

    当我在 Celery 任务中使用 Scrapy 解析函数 有时可能需要 10 分钟 时 我得到了这个信息 我用 姜戈 1 6 5 django celery 3 1 16 芹菜 3 1 16 psycopg2 2 5 5 我也使用了psyc
  • Python PAM 模块的安全问题?

    我有兴趣编写一个 PAM 模块 该模块将利用流行的 Unix 登录身份验证机制 我过去的大部分编程经验都是使用 Python 进行的 并且我正在交互的系统已经有一个 Python API 我用谷歌搜索发现pam python http pa
  • Pycharm Python 控制台不打印输出

    我有一个从 Pycharm python 控制台调用的函数 但没有显示输出 In 2 def problem1 6 for i in range 1 101 2 print i end In 3 problem1 6 In 4 另一方面 像
  • 导入错误:没有名为 _ssl 的模块

    带 Python 2 7 的 Ubuntu Maverick 我不知道如何解决以下导入错误 gt gt gt import ssl Traceback most recent call last File
  • SQL Alchemy 中的 NULL 安全不等式比较?

    目前 我知道如何表达 NULL 安全的唯一方法 SQL Alchemy 中的比较 其中与 NULL 条目的比较计算结果为 True 而不是 NULL 是 or field None field value 有没有办法在 SQL Alchem
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • python pandas 中的双端队列

    我正在使用Python的deque 实现一个简单的循环缓冲区 from collections import deque import numpy as np test sequence np array range 100 2 resha
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • 表达式中的 Python 'in' 关键字与 for 循环中的比较 [重复]

    这个问题在这里已经有答案了 我明白什么是in运算符在此代码中执行的操作 some list 1 2 3 4 5 print 2 in some list 我也明白i将采用此代码中列表的每个值 for i in 1 2 3 4 5 print
  • ExpectedFailure 被计为错误而不是通过

    我在用着expectedFailure因为有一个我想记录的错误 我现在无法修复 但想将来再回来解决 我的理解expectedFailure是它会将测试计为通过 但在摘要中表示预期失败的数量为 x 类似于它如何处理跳过的 tets 但是 当我
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • 为美国东部以外地区的 Cloudwatch 警报发送短信?

    AWS 似乎没有为美国东部以外的 SNS 主题订阅者提供 SMS 作为协议 我想连接我的 CloudWatch 警报并在发生故障时接收短信 但无法将其发送到 SMS YES 经过一番挖掘后 我能够让它发挥作用 它比仅仅选择一个主题或输入闹钟
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 循环标记时出现“ValueError:无法识别的标记样式 -d”

    我正在尝试编码pyplot允许不同标记样式的绘图 这些图是循环生成的 标记是从列表中选取的 为了演示目的 我还提供了一个颜色列表 版本是Python 2 7 9 IPython 3 0 0 matplotlib 1 4 3 这是一个简单的代
  • 在 Python 类中动态定义实例字段

    我是 Python 新手 主要从事 Java 编程 我目前正在思考Python中的类是如何实例化的 我明白那个 init 就像Java中的构造函数 然而 有时 python 类没有 init 方法 在这种情况下我假设有一个默认构造函数 就像

随机推荐

  • 在 CSS 中并排居中放置多个图像

    我是 CSS 和 HTML 的初学者 所以我确信这很混乱 但我想做的是在 CSS 中将 3 个图像并排居中水平居中 我尝试过不同的解决方案 使它们正确对齐 但它们仍然停留在页面的左侧 或者会堆叠在一起 有时会重叠 div img src I
  • 可以防止 403 错误记录到 Web 控制台吗?

    我有一些 js html css 在某些情况下会在加载图像时遇到无害的 403 错误 有什么方法可以捕获这些错误并防止它们将错误记录到控制台吗 Thanks 没有 如果服务器响应 200 以外的任何内容 您将在控制台中看到它 您需要在服务器
  • hdfs(namenode)中使用的名称空间和元数据的含义是什么

    作为 hadoop 的初学者 我对命名空间和元数据这两个词感到困惑 这两者之间有什么关系吗 根据 Hadoop 权威指南 NameNode 管理文件系统名称空间 它维护文件系统树以及树中所有文件和目录的元数据 本质上 命名空间意味着一个容器
  • 对于大n,如何计算2^n?

    我正在尝试编写一个需要数字的程序 n 作为输入 并输出 2 次方的结果n 问题是 n可以非常大 最多 100 000 本质上 我正在尝试计算pow 2 n 对于非常大的数字 我认为做到这一点的方法是将数字存储在数组中 因为没有内置的数字类型
  • 如何使用 Google Drive API 上传 FILE_URI:插入文件

    在 Android 上 我尝试使用 Google Drive API 插入文件上传 Cordova Phonegap getPicture 的输出 有没有办法使用 FILE URI 而不是 DATA URL base64 来做到这一点 我首
  • 导入 .TLB 文件给出“无法打开源文件 x.tlh”

    我正在将 VS2010 C 项目更新到 VS2019 该项目正在导入多个 tlb 文件 对于每个文件 VS2019 都会给出一个错误 指出 无法打开 tlh 文件的源文件 其中一个来自我也升级过的 DLL 用 C 编写 在 VS2019 中
  • 如何在 ASP.NET 网站项目中使用最新的 VB.NET 语言级别?

    我的任务是对 2009 年开发的 Web 应用程序进行现代化改造 它是用 VB NET 编写的 并使用 ASP NET WebForms 我想使用 VB NET 中最新的语言结构 我得到有用的指示 说 Visual Basic 10 0 不
  • 未捕获的类型错误:对象 [object DOMWindow] 的属性“$”不是函数

    我得到一个 未捕获的类型错误 对象 object DOMWindow 的属性 不是函数我的脚本在 Chrome 中出错
  • “this”关键字如何工作以及何时使用?

    我正在寻找关于 this 关键字的作用以及如何正确使用它的清晰解释 它的行为似乎很奇怪 我不完全明白为什么 如何this工作以及什么时候应该使用它 this是 JavaScript 中的关键字 是执行上下文的属性 它的主要用途是在函数和构造
  • Zend 动作助手

    我正在学习如何使用 Zend 框架 并意识到操作助手是有用的 我已经在我的机器上设置了 Zend 的默认安装 但我不知道帮助程序文件需要放在哪里 我需要在引导程序文件中放入什么以及如何使用它 谁能给我指出正确的方向吗 ZF 用户指南对我来说
  • C# 字符串到十六进制、十六进制到字节的转换

    我有一个方法 它采用十六进制值并将其分配为纯文本 但字节类型是这样的 byte plainText 0xd7 我想从文本框中获取这个值 例如用户将在文本框中键入 d7 我将像这样分配它 byte plaintText 0xd7 我无法做到这
  • 我应该使用我的应用程序重新分发 msvcrt.dll 吗?

    如果应用程序的某些库动态依赖于 msvcrt dll 我是否应该将 msvcrt dll 与我的应用程序一起重新分发并使用私有 dll IE 系统的msvcrt dll dll hell 是否可能存在不兼容问题 应用程序针对 Windows
  • 如何实现顶层异常处理?

    最近 我必须为同事开发的现有服务开发一个附加模块 他在主工作函数中放置了一个 try catch 块 用于捕获所有冒泡到此级别的未处理异常 并将它们与堆栈跟踪信息等记录在一起 try do main work catch Exception
  • PyCUDA:设备代码中的 Pow 尝试使用 std::pow,失败

    问题或多或少说明了一切 calling a host function std pow
  • ValueError:找到具有 0 个样本的数组(形状= (0, 1),而 MinMaxScaler 要求最小值为 1

    我是机器学习的初学者 我正在帮助我的数学专业朋友基于 TensorFlow 创建一个股票预测器 csv他提供的文件 我有一些问题 第一个是他的 csv文件 该文件只有日期和结束值 它们没有分开 因此我必须手动分隔日期和值 我已经成功做到了这
  • ArrayList 的不安全或未经检查的操作

    我被指派编写一个程序 获取 100 个 0 25 之间的随机整数并将它们存储在一个数组中 然后我必须调用两种方法来分割偶数和赔率 非常典型 所以我尝试了 ArrayList 的东西 我刚刚学会它 它看起来很好 我正在关注教程和在线的东西 直
  • hibernate oracle 标识符太长 ORA-00972

    我被这个问题困扰了 数据库架构是由其他人提供的 因此我不能简单地更改名称 我尝试在各处添加正确的注释 也许我遗漏了一些东西 明显的 这是我的完整映射 相当多的类 我将提交 getter setter 问题是当休眠试图获取所有List
  • Android Service.startForeground 不尊重通知 ID 的唯一性

    Service startForeground vs 通知管理器 notify 给出不同的行为 使用时notify使用两个不同的通知 ID 创建 2 个通知 Good 当做同样的事情时启动前台 一个通知会覆盖另一个通知 Bad 测试设备 N
  • 用于纯 Firebase JavaScript API 的 orderby 对象过滤器

    I found angularFire当与纯 Firebase JavaScript API 结合使用时 总是让我感到困惑 假设我不知道如何调用 Firebase datasapshot APIss name ss hasChild ss
  • 在python中获取函数调用者的信息

    我想获取有关 python 中特定函数的调用者的信息 例如 class SomeClass def init self x self x x def caller self return special func self x def sp