2017-03-09 96 views
0

我想学习Python和我坚持与类之间的共享变量。从主类访问变量

我有一个类,设置一个变量是这样的:

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 

我想从我的主要访问new_games,我想是这样的:

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。这并运行实例t1,你应该使用:

print(t1.get_new_games()) 

(请注意,有没有真正似乎是一个很好的理由在这里使用线程,不过没关系)

+0

谢谢!实际上,为了简单起见,我使用其他线程的内容更多,我只复制了一个,这没有意义;) – PrimuS

2

在下面一行

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

你让CheckStuff类的新实例,并在构造函数中设置self.newGames = False。然后,通过调用get_new_game()方法,您要求对象返回其newGame属性,这显然是False