import sys
MAX_INT = sys.maxsize
class SelfAdder():
def __init__(self, maximum:int = MAX_INT):
self.maximum = maximum
self.i = 0
def __call__(self):
if self.i == self.maximum:
self.i = 1
else:
self.i = self.i + 1
return self.i - 1
adder = SelfAdder()
print(adder()) #0
print(adder()) #1
print(adder()) #2
print(adder()) #3
print(adder()) #4
print(adder()) #5
adder = SelfAdder(3)
print(adder()) #0
print(adder()) #1
print(adder()) #2
print(adder()) #0
print(adder()) #1
print(adder()) #2