Python Access调用者的全局()

时间:2016-05-21 09:08:17

标签: python class globals

我要求我的类建立对类调用者中所有变量的访问权限。原因是已创建TCP / IP协议,可以查询程序中的任何变量。客户端传递变量的名称,Python服务器返回其内容。

这已经运行了很多年,但我现在希望将该协议与另一个程序一起使用,因此我将协议处理程序例程转换为类。

之前,我的主程序包含

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

工作正常。但是现在我将我的例程转换为一个类,globals()实际上是类的本地变量而不是它的调用者。

我有什么想法可以访问该类调用者的globals()吗?

我真的很想留下全球(),因为我几乎理解它。除非建议的替代方案真的很简单!感谢。

1 个答案:

答案 0 :(得分:1)

虽然你技术上可以通过堆栈框架内省来访问调用者的全局变量,但你真的在这里做错了。

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

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