1

我对 Python 比较陌生,在导入变量以在另一个类中使用它时遇到了一些麻烦。我确实查看了有关该主题的其他几个问题并试图使其发挥作用,但似乎我早期设置该程序的方式可能是问题所在。我会简化正在发生的事情,所以要阅读的内容更少......

服务器.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()

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

部分原因肯定是我的错,因为我设置了错误的程序......但我太过分了,无法重新开始。有什么方法可以进行这种设置并读取这些变量吗?

4

1 回答 1

3

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

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

接下来,您可以通过查看传入testgame_loop实例来找到:

class Game:
  def game_loop(self, server):
    print server.test
于 2013-03-03T02:07:00.653 回答