2017-05-09 39 views
0

我創建了一個應該在終端上運行的時鐘程序。但每當我運行它時,它總是將秒,分和小時遞增1。Python時鐘遞增

它應該只由1每秒,直到秒遞增秒60,然後由1等遞增分鐘..

我不知道爲什麼它輸出1:1:1,那麼2:2:2然後3:3:3等等

# Clock 
import time 
import sys 


class Counter: 
    count = 0 
    name = "" 

    def __init__(self, name): 
     self.name = name 

    def Increment(self): 
     Counter.count += 1 

    def Reset(self): 
     Counter.count = 0 


class Clock: 

    seconds = Counter("Seconds") 
    minutes = Counter("Minutes") 
    hours = Counter("Hours") 

    def Tick(self): 
     time.sleep(1) 
     Clock.seconds.Increment() 

     if Clock.seconds.count >= 60: 
      Clock.seconds.Reset() 
      Clock.minutes.Increment() 
      if Clock.minutes.count >= 60: 
       Clock.minutes.Reset() 
       Clock.hours.Increment() 
       if Clock.hours.count >= 12: 
        Clock.ResetClock() 

    def ResetClock(self): 
     Clock.seconds.Reset() 
     Clock.minutes.Reset() 
     Clock.hours.Reset() 

    def SetClock(self, seconds, minutes, hours): 
     self.hours = hours 
     self.minutes = minutes 
     self.seconds = seconds 

    def ReadClock(self): 
     sys.stdout.writelines(" \r Current Time: %d:%d:%d" % (Clock.hours.count, Clock.minutes.count, Clock.seconds.count)) 


clock = Clock() 
while True: 
    clock.Tick() 
    clock.ReadClock() 

回答

3

您的Counter類類級別變量而不是實例級別的變量。這意味着變量count在您的類之間共享,這就是爲什麼每當調用Increment時它都會增加。

你應該有count是實例,而不是類的一部分:

class Counter: 
    def __init__(self, name): 
     self.name = name 
     self.count = 0 

    def Increment(self): 
     self.count += 1 

    def Reset(self): 
     self.count = 0 
+0

好極了!謝謝!第一天使用Python,所以我現在越來越多地理解它,謝謝!如果允許,我會在6分鐘內接受你的答案。 – Noob