Ошибка типа: объект «Нетип» не может быть вызван (декораторы python)

#python #python-decorators

Вопрос:

я получаю TypeError: 'NoneType' object is not callable ошибку при использовании get_frame_work() . как я могу это исправить?

 import sys


def main(frame_work):
    if frame_work() == "selenium":
        pass
    elif frame_work() == "puppeteer":
        pass
    elif frame_work() == "play_wright":
        pass
    else:
        raise Exception("Invalid command!")


@main
def get_frame_work():
    return str(sys.argv[1].lower())


get_frame_work() #get_frame_work does not give an error unlike get_frame_work().
 

Ответ №1:

Декоратору необходимо вернуть фактический объект функции, который обертывает оформленную функцию. Изменение вашего main , как это, заставит его работать.

 import sys


def main(frame_work):
    def f(): 
        if frame_work() == "selenium":
            pass
        elif frame_work() == "puppeteer":
            pass
        elif frame_work() == "play_wright":
            pass
        else:
            raise Exception("Invalid command!")
    return f