2017-03-09 11 views
0

私はPythonを学ぼうとしています。クラス間で共有変数が残っています。メインのクラスからの変数へのアクセス

私はこのような変数設定クラスがあります:私は私のメインからnew_gamesにアクセスしたい

class CheckStuff(threading.Thread): 

    def __init__(self, debug): 
    threading.Thread.__init__(self) 
    self.debug = debug 
    self.newGames = False 

    def get_new_games(self): 
    return self.newGames 

    def set_new_games(self, new_games): 
    self.newGames = new_games 

    def run(self): 
    # DO STUFF # 
    # ... # 
    self.set_new_games(True) 
    return 

を、私はこのように試してみました:

if __name__ == "__main__": 

    debug = True 
    t1 = cs.CheckStuff(debug) 
    t1.start() 
    t1.join() 

    print(cs.CheckStuff(debug).get_new_games()) 
    exit() 

しかし、これは常にFalseを返します。どこが間違っていますか?任意のヒントが評価されました

+0

質問がありますか? "cs"とは何ですか? –

+0

これはトップからインポートされたものです: 'import CheckStuff as cs ' – PrimuS

+0

ありがとう、次回この単純な行を追加するか、これを避けるために" cs "を削除してください。最良の問題は、コードを自分のIDEにコピーしてコピーし、未定義のメソッドや変数を検索せずに実行して、それらを削除できるかどうかです。 –

答えて

4

CheckStuffの新しいインスタンスを作成していますが、これはnewGames属性がFalseなので何も実行していません。で

print(t1.get_new_games()) 

(。本当にここにスレッドを使用するには十分な理由があるとは思えない、注意してください、しかし、気にしない)

+0

ありがとう!実際には、単純化のためだけに他のスレッドを使用するより多くのものがあります。私は1つしかコピーしませんでした。 – PrimuS

2

:実行したインスタンスは、あなたがそれを使用する必要があり、t1ですライン

print(cs.CheckStuff(debug).get_new_games()) 

次あなたはCheckStuffクラスの新しいインスタンスを作成し、コンストラクタで、あなたはself.newGames = Falseを設定します。次に、get_new_game()メソッドを呼び出すことによって、オブジェクトにnewGame属性を返すように要求します。これは明らかにFalseです。

関連する問題