如何在不实例化类的情况下读取另一个文件中的实例变量?
我刚接触Python,遇到了一些麻烦,想把一个变量导入到另一个类里用。我查了好几个相关的问题,试着让它工作,但感觉我一开始设置程序的方式可能有问题。我来简化一下情况,这样读起来会轻松点...
Server.py:
import Game
class Server():
def __init__(self):
# Server connection details here
self.test = 5
self.game = Game()
def serve(self):
# Client processing, etc.
self.game.game_loop()
if __name__ == "__main__":
server = Server()
server.serve()
Game.py:
class Game():
def __init__(self):
# Other variables...
def game_loop(self):
# To reference server's instance variables
from Server import server
print test
在这个例子中,我想从Server的服务器实例中引用一个叫“test”的变量。值得一提的是,如果我把这两个类放在同一个文件里,然后把最后的if语句去掉,这样是可以工作的……但我不想让文件变得那么长 :)
因为这两个文件是分开的,所以我不能在不去掉Server.py中的if语句的情况下获取“server”的实例变量。当我去掉它时,会因为我在做的其他事情而出现socket错误……我需要确保只有一个服务器对象(而且它的类只“调用”一次),但能在不每次都把这些实例变量传给我的Game类的情况下引用它们,这样会方便很多...
这部分确实是我自己设置程序时搞错了……但我已经走得太远,不能从头开始。有没有办法让我在这种设置下读取这些变量呢?
1 个回答
4
首先,test
是一个 实例 变量,所以你需要把一个 Server
的 实例 传递给你的游戏循环:
class Server:
def serve(self):
# Client processing, etc.
self.game.game_loop(self)
接下来,你可以通过查看传入的实例,在 game_loop
中找到 test
:
class Game:
def game_loop(self, server):
print server.test