fork download
  1. class propholder:
  2. def __init__(self):
  3. self.__class__.propgetter._usecount = 0
  4.  
  5. def propgetter(self):
  6. self.__class__.propgetter._usecount = self.__class__.propgetter._usecount + 1
  7. print(f"getcount= {self.__class__.propgetter._usecount}")
  8. return self.__class__.propgetter._pvalue # set by the setter
  9.  
  10. def propsetter(self, v):
  11. self.__class__.propgetter._pvalue = v
  12.  
  13. # function to delete _age attribute
  14. def propdeleter(self):
  15. del self.__class__.propgetter
  16. del self.__class__.propsetter
  17. del self.__class__.propdeleter
  18.  
  19. aprop = property(propgetter, propsetter, propdeleter)
  20.  
  21.  
  22. ap = propholder()
  23. for i in [10, 11, 12]:
  24. ap.aprop = i
  25. print(f" ap.aprop={ap.aprop} ")
  26. prop_get = ap.__class__.aprop.__get__
  27. print(prop_get.__self__.fget)
  28. print(prop_get.__self__.fget._usecount)
Success #stdin #stdout 0.08s 14132KB
stdin
Standard input is empty
stdout
getcount= 1
 ap.aprop=10 
getcount= 2
 ap.aprop=11 
getcount= 3
 ap.aprop=12 
<function propholder.propgetter at 0x1500c7016160>
3