Помогите с декоратором, а именно с проверкой чисел в нем
import functools
import string
def validate_args(func):
@functools.wraps(func)
def wrap(*args):
if len(args) < 2:
return 'No enough arguments'
elif len(args) > 2:
return 'Too many arguments'
elif not all(str(x.isdigit()) for x in args):
return 'Wrong types'
else:
return func(*args)
return wrap
@validate_args
def add_numbers(x, y):
"""Return sum of x and y"""
return x + y
assert add_numbers(4, 5) == 9
assert add_numbers(4) == 'No enough arguments'
assert add_numbers('hello') == 'No enough arguments'
assert add_numbers(3, 5, 6) == 'Too many arguments'
assert add_numbers('a', 'b', 'c') == 'Too many arguments'
assert add_numbers(4.5, 5.1) == 'Wrong types'
assert add_numbers('hello', 4) == 'Wrong types'
assert add_numbers(9, 'hello') == 'Wrong types'
assert add_numbers([1, 3], {}) == 'Wrong types'
assert add_numbers.__name__ == 'add_numbers'
assert add_numbers.__doc__.strip() == 'Return sum of x and y'
print('Good')
У меня возникает ошибка AttributeError: 'int' object has no attribute 'isdigit' я не пойму как это решить...
Источник: Stack Overflow на русском