我要求我的类建立对类调用者中所有变量的访问权限。原因是已创建TCP / IP协议,可以查询程序中的任何变量。客户端传递变量的名称,Python服务器返回其内容。
这已经运行了很多年,但我现在希望将该协议与另一个程序一起使用,因此我将协议处理程序例程转换为类。
之前,我的主程序包含
if (myvarname in globals()): tcpip_send(globals()[myvarname])
工作正常。但是现在我将我的例程转换为一个类,globals()实际上是类的本地变量而不是它的调用者。
我有什么想法可以访问该类调用者的globals()吗?
我真的很想留下全球(),因为我几乎理解它。除非建议的替代方案真的很简单!感谢。
答案 0 :(得分:1)
虽然你技术上可以通过堆栈框架内省来访问调用者的全局变量,但你真的在这里做错了。
不依赖于全局变量,而是依赖实例状态。让调用者创建您的类并在那时传入所有必需的数据,然后将其存储为实例属性。
然后,任何需要访问此状态的方法都可以通过self.attribute
访问,而不是全局访问。