Подсчет методов 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

Ответы (0 шт):