如何在不实例化类的情况下从另一个文件中读取实例变量?

时间:2013-03-03 02:00:52

标签: python

我对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”获取实例变量。当我删除它时,由于我正在做的其他事情,我得到套接字错误...我需要做到这一点,以便只有一个服务器对象(并且它的类只被“调用”一次),但它' d非常方便能够引用这些实例变量而不会在每次运行时将它们传递给我的Game类...

这部分肯定是我的错,因为我把我的程序设置错了......但是我太过分了。有什么方法可以采取这种设置并读入这些变量吗?

1 个答案:

答案 0 :(得分:2)

首先,test作为实例变量存在,因此您需要将Server实例传递给您的游戏循环:

class Server:
  def serve(self):
    # Client processing, etc.
    self.game.game_loop(self)

接下来,您可以通过查看传入的实例在test中找到game_loop

class Game:
  def game_loop(self, server):
    print server.test