Python 访问调用者的 global()

Python Access caller's global()

我有一个函数可以访问 Python 脚本的 globals()。我已将 teh 函数移动到它自己的 class 中。现在函数只能访问 class 的 globals(),不能访问调用脚本。

问题:class 中的函数如何访问调用它的脚本的 globals()?

谢谢。

详情:

我的 class 需要在 class 的调用方中建立对所有变量的访问权限。原因是已经创建了一个 TCP/IP 协议,它可以查询程序中的任何变量。客户端传递变量的名称,Python 服务器 returns 它的内容。

多年来一直运行良好,但我现在希望将协议用于另一个程序,因此我将协议处理程序例程转换为 class。

之前,我的主程序包含

if (myvarname in globals()): tcpip_send(globals()[myvarname])

效果很好。但是现在我已经将例程转换为 class,globals() 实际上是 class 的本地变量,而不是其调用者。

请问我如何访问 class 的调用者的 globals()?

我真的很想继续使用 globals(),因为我几乎理解了它。除非提议的替代方案真的非常简单!

尽管您技术上 可以通过堆栈帧内省访问调用者的全局变量,但您确实在这里做错了。

不依赖全局变量,而是依赖实例状态。让调用者创建您的 class 并传入 所有必需的数据 ,然后将其存储为实例属性。

然后任何需要访问此状态的方法都可以通过 self.attribute 访问,而不是作为全局访问。