====== Properties in Python ====== Good writeups: * https://stackabuse.com/the-python-property-decorator/ * https://www.programiz.com/python-programming/property class ClickerCounter(): def __init__(self, upper): self.__count = 0 # instance variable for storing the count self.__limit = upper # instance variable for storing the limit def click(self): """ Advance the count by one and reset if over the upper limit. """ self.__count += 1 # wrap the count if over the limit if self.__count > self.__limit: self.__count = 0 def reset(self): """Reset the counter.""" self.__count = 0 @property def count(self): return self.__count @property def limit(self): return self.__limit @limit.setter def limit(self, l): """Set a new count limit.""" if l > 0: self.__limit = l else: print('Invalid new limit:', l) c = ClickerCounter(100) c.click() c.click() print(c.count) # 2 print(c.limit) # 100 c.limit = 1000 print(c.limit) # 1000 c.limit = 0 print(c.limit) # 1000