fork(2) download
  1. class myProp:
  2. __props={}
  3. def __getattribute__(self, name):
  4. if name in object.__getattribute__(self, "_myProp__props").keys():
  5. return self.__props[name](self)
  6. return object.__getattribute__(self, name)
  7. def __delattribute__(self, name):
  8. if name in self.__props.keys():
  9. del self.__props[name]
  10. return
  11. object.__delattribute__(self, name)
  12. def __setattr__(self, name, value):
  13. if name in self.__props.keys():
  14. return self.__props[name](self, value)
  15. return object.__setattr__(self, name, value)
  16. @classmethod
  17. def wrapper(self, fn):
  18. self.__props[fn.__name__]=fn
  19.  
  20. class test(myProp):
  21. def __init__(self):
  22. self.x=5
  23.  
  24. @myProp.wrapper
  25. def myfunc(self, value=None):
  26. if value:
  27. self.x=value*2
  28. return self.x-2
  29.  
  30. x= test()
  31. print(x.myfunc)
  32. x.myfunc=6
  33. print(x.myfunc)
  34.  
Success #stdin #stdout 0.15s 10264KB
stdin
Standard input is empty
stdout
3
10