Подсчет методов Python с помощью декоратора функции
Помогите разобраться с декораторами.
Функция которая будет у пользователя брать python объект и выводить все его методы в списке, кроме dunder methods.
def method_name():
""" Функция выдает заданные методы, без dunder methods """
dunder_logic = [method for method in dir(tuple) if
method.startswith('__') is False]
return dunder_logic
call_foo = method_name
print(call_foo())
Так как в dunder_logic, указан dir(tuple), он выводит:
['count', 'index']
Я написал декоратор к это функции, который должен выводить количество методов, без dunder methods.
def methods_amount():
""" Декоратор должен выдавать количество методов в функции def method_name """
def wrapper(count_method):
count = 0
for element in count_method:
count += element
return count_method
return wrapper
Вывод должен быть таким:
[count, index]
2
И к функции def method_name(), еще один декоратор, который будет принимать аргументом текст и по итогу 3 вывод должен выводить:
@methods_amount('need to learn')
[count, index]
'need to learn 2'
По итогу с использование декоратора @methods_amount, выводит ошибку TypeError.
TypeError: methods_amount() takes 0 positional arguments but 1 was given
Если убрать декоратор @methods_amount, то все работает и выводит то что нужно, а именно:
['count', 'index']
А необходимо, чтобы декоратор подсчитывал количество выводимых методов:
[count, index]
2