44_decorator.py 543 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from functools import cache
  2. class A:
  3. def __init__(self, x):
  4. self._x = x
  5. @property
  6. def x(self):
  7. return self._x
  8. a = A(1)
  9. assert a.x == 1
  10. class B:
  11. def __init__(self):
  12. self._x = 1
  13. def _x_setter(self, v):
  14. self._x = v
  15. B.x = property(
  16. lambda self: self._x,
  17. B._x_setter
  18. )
  19. b = B()
  20. assert b.x == 1
  21. b.x = 2
  22. assert b.x == 2
  23. @cache
  24. @cache
  25. @cache
  26. def fib(n):
  27. # print(f'fib({n})')
  28. if n < 2:
  29. return n
  30. return fib(n-1) + fib(n-2)
  31. assert fib(32) == 2178309