2016-10-30 3 views
1

Почему я получаю вышеуказанное исключение от запуска, запустите вызов здесь. Я чувствую, что я что-то очень и очень очевидное отсутствует ..Я получаю «TypeError: decorator_factory() принимает ровно 2 аргумента (1 данный)»

def decorator_factory(arg1, arg2): 
    def simple_decorator(f): 
     def wrapper(): 
       print arg1 
       f() 
       print arg2 
    return wrapper 
return decorator_factory 

@decorator_factory("what the heck", "what the heck2") 
def hello(): 
print "Hello World" 

hello() 
+0

Пожалуйста, перепроверьте свой indendation. Кроме того, нет ничего явно неправильного в том, что вы написали; пожалуйста, дайте [mcve] с полной трассировкой. – jonrsharpe

+1

Это должно быть 'return simple_decorator' вместо' return decorator_factory' – furas

+0

Извините, ребята, позвольте мне скопировать его снова здесь .. похоже, что вставка кода здесь дала мне проблемы, о которых здесь упоминают парни. – slopeofhope

ответ

2

Он должен быть return simple_decorator вместо return decorator_factory

def decorator_factory(arg1, arg2): 
    def simple_decorator(f): 
     def wrapper(): 
       print arg1 
       f() 
       print arg2 
     return wrapper 
    return simple_decorator # <--- HERE 

@decorator_factory("what the heck", "what the heck2") 
def hello(): 
    print "Hello World" 

hello() 
Смежные вопросы