f | from functools import wraps | f | from functools import wraps |
| | | |
| class Fix: | | class Fix: |
| | | |
| def __init__(self, n): | | def __init__(self, n): |
| self.n = n | | self.n = n |
| | | |
| def __call__(self, func): | | def __call__(self, func): |
| | | |
| @wraps(func) | | @wraps(func) |
| def wrapper(*args, **kwargs): | | def wrapper(*args, **kwargs): |
n | converted_args = [] | n | rounded_args = [] |
| for arg in args: | | for arg in args: |
| if isinstance(arg, float): | | if isinstance(arg, float): |
n | converted_args.append(round(arg, self.n)) | n | rounded_args.append(round(arg, self.n)) |
| else: | | else: |
n | converted_args.append(arg) | n | rounded_args.append(arg) |
| converted_kwargs = {} | | rounded_kwargs = {} |
| for k, v in kwargs.items(): | | for k, v in kwargs.items(): |
| if isinstance(v, float): | | if isinstance(v, float): |
n | converted_kwargs[k] = round(v, self.n) | n | rounded_kwargs[k] = round(v, self.n) |
| else: | | else: |
t | converted_kwargs[k] = v | t | rounded_kwargs[k] = v |
| out = func(*converted_args, **converted_kwargs) | | result = func(*rounded_args, **rounded_kwargs) |
| if isinstance(out, float): | | if isinstance(result, float): |
| out = round(out, self.n) | | return round(result, self.n) |
| | | else: |
| return out | | return result |
| return wrapper | | return wrapper |