在对象方法中停止循环

时间:2015-11-21 02:54:34

标签: python-2.7 methods

我在python 2.7.9中有一个包含两个方法的类,如下所示:

class test:

    def __init__(self):
         self.a=True

    def print_hi(self):
         if self.a==True:
              while True:
                   print 'hi'

    def stop(self):
         self.a=False

if __name__=='__main__':
    play=test()
    play.print_hi()
    play.stop()

如果我愿意,可以通过调用'stop'方法停止'print_hi'中的while循环?我知道我必须以这样的方式更改代码:在while循环的每次迭代中,可以检查实例变量'a'(self.a)的值。我想通过stop方法这样做。是否有一种pythonic方式来做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以按照以下步骤执行此操作:

  1. 继承threading.Thread
  2. 为您的类添加一个新方法(run),该方法调用方法“self.print_hi()”
  3. 如果要运行该方法,只需调用“start”。
  4. 如果要停止循环,请调用“停止”。
  5. PS:你可以将“True”改为“self.a”,我认为它会更好。

    import threading
    import time
    
    class test(threading.Thread):
    
        def __init__(self):
            threading.Thread.__init__(self)
            self.a=True
    
        def run(self):
            self.print_hi()
    
        def print_hi(self):
            while self.a:
                print 'hi'
    
        def stop(self):
            self.a=False
    
    if __name__=='__main__':
        play=test()
        play.start()
        time.sleep(2)
        play.stop()