fork 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. value = self.value
  13. a = kwargs.get("a")
  14. if isinstance(value, list):
  15. if a> 10:
  16. value = str
  17. else:
  18. value = float
  19. print(value(a))
  20. return inner
  21.  
  22. "____________________________________________________________"
  23.  
  24. @SomeDecorator(value=[float, str])
  25. def f1(*args, **kwargs):
  26. return "f1"
  27.  
  28.  
  29.  
  30. f1(a=5)
  31. f1(a=12)
  32. f1(a=5)
  33. f1(a=15)
Success #stdin #stdout 0.02s 9084KB
stdin
Standard input is empty
stdout
Decorator init called
5.0
12
5.0
15