52_context.py 470 B

123456789101112131415161718192021222324252627282930
  1. path = []
  2. class A:
  3. def __init__(self, x):
  4. self.x = x
  5. self.path = []
  6. def __enter__(self):
  7. path.append('enter')
  8. return self.x
  9. def __exit__(self, *args):
  10. path.append('exit')
  11. with A(123):
  12. assert path == ['enter']
  13. assert path == ['enter', 'exit']
  14. path.clear()
  15. with A(123) as a:
  16. assert path == ['enter']
  17. assert a == 123
  18. path.append('in')
  19. assert path == ['enter', 'in', 'exit']
  20. path.clear()