class_descriptor.py 619 B

12345678910111213141516171819202122232425262728293031323334
  1. class Descriptor:
  2. def __get__(self, obj, cls):
  3. print('get')
  4. print(type(obj) is Main)
  5. print(cls is Main)
  6. return 'result'
  7. def __set__(self, obj, val):
  8. print('set')
  9. print(type(obj) is Main)
  10. print(val)
  11. def __delete__(self, obj):
  12. print('delete')
  13. print(type(obj) is Main)
  14. class Main:
  15. Forward = Descriptor()
  16. m = Main()
  17. try:
  18. m.__class__
  19. except AttributeError:
  20. print("SKIP")
  21. raise SystemExit
  22. r = m.Forward
  23. if 'Descriptor' in repr(r.__class__):
  24. print('SKIP')
  25. raise SystemExit
  26. print(r)
  27. m.Forward = 'a'
  28. del m.Forward