1

私は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ステートメントを削除すると、これは機能することに注意してください...しかし、1つのファイルをそれほど長くしたくないです:)

これらは別々のファイルにあるため、Server.pyのifステートメントを削除せずに「server」からインスタンス変数を取得することはできません。削除すると、他の処理が原因でソケットエラーが発生します...サーバーオブジェクトが1つだけになるように(そしてそのクラスが1回だけ「呼び出される」ように)作成する必要がありますが、 d実行するたびにGameクラスに渡さずに、これらのインスタンス変数を参照できると非常に便利です...

これの一部は、プログラムを間違って設定したという点で間違いなく私のせいです...しかし、私はそれを最初からやり直すには遠すぎます。この種の設定を行ってそれらの変数を読み取る方法はありますか?

4

1 に答える 1

3

まず、インスタンス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
于 2013-03-03T02:07:00.653 に答える