fork(3) download
  1. from functools import wraps
  2.  
  3. class SomeDecorator:
  4.  
  5. def __init__(self, value):
  6. print("Decorator init called")
  7. self.value = value
  8.  
  9. def __call__(self, func):
  10. @wraps(func)
  11. def inner(*args, **kwargs):
  12. a = kwargs.get("a")
  13. if isinstance(self.value, list):
  14. if a> 10:
  15. self.value = str
  16. else:
  17. self.value = float
  18. print(self.value(a))
  19. return inner
  20.  
  21. "____________________________________________________________"
  22.  
  23. @SomeDecorator(value=[float, str])
  24. def f1(*args, **kwargs):
  25. return "f1"
  26.  
  27.  
  28.  
  29. f1(a=5)
  30. f1(a=12)
  31. f1(a=5)
  32. f1(a=15)
Success #stdin #stdout 0.03s 8864KB
stdin
Standard input is empty
stdout
Decorator init called
5.0
12.0
5.0
15.0