2017-05-09 2 views
0

Ich habe ein Uhrprogramm erstellt, das auf dem Terminal laufen sollte. aber wenn ich es starte, werden die Sekunden, Minuten und Stunden immer um 1 pro Sekunde erhöht.Python Clock Increment

Es sollte 60 die Sekunden jede Sekunde um 1 bis Sekunden erhöht nur erhöhen, dann die Minuten um 1 etc ..

Ich weiß nicht, warum es 1 gibt: 1: 1, dann 2: 2: 2 3 dann: 3: 3 etc ...

# 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() 

Antwort

3

Sie haben Klasse-Ebene Variablen statt Instanzebene Variablen in Ihrer Counter Klasse. Dies bedeutet, dass die Variable count zwischen Ihren Klassen geteilt wird, weshalb sie bei jedem Aufruf von Increment inkrementiert wird.

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

Ausgezeichnet: statt der Klasse

sollten Sie haben count Teil der Instanz sein! Danke! ersten Tag mit Python, so verstehe ich es mehr und mehr jetzt danke! Ich akzeptiere Ihre Antwort in 6 Minuten, wenn es erlaubt. – Noob