class AODigit: def increment(): pass def decrement(): pass def toString(): pass class ODigit(AODigit): def __init__(self, next): self.next=next self.i = 0 def increment(self): self.i=(self.i+1) % 10 if self.i==0: self.next.increment() def decrement(self): self.i=((self.i-1)+10) % 10 if self.i==9: self.next.decrement() def toString(self): return self.next.toString()+str(self.i) class OEnd(AODigit): def increment(self): pass def toString(self): return "" def OEnd(): pass odometer=OEnd() #A 0 digit odometer odometer=ODigit(odometer) # A 1 digit odometer odometer=ODigit(odometer) # A 2 digit odometer odometer=ODigit(odometer) # A 3 digit odometer odometer=ODigit(odometer) # A 4 digit odometer for i in range(5000): # Call the toString method of AODigit print odometer.toString() odometer.increment() for i in range(10): # Call the toString method of AODigit print odometer.toString() odometer.decrement()