но в самой функции этот параметр не используется. Как избежать такого подхода?
Все работает, но во-первых неочевидно из-за этого в самой фукции зачем этот параметр, а во вторых подсветка пичарма в таком случае тоже подсказывает что он не использован
Пример
id = 10
def decorator(func):
def wrapper(*args, **kwargs)
some_obj = SomeClass(*args, **kwargs) # тут берется id для объекта
return func(operator=some_obj, *args, **kwargs)
return wrapper
@decorator
def foo(operator, id):
operator.its_method()
def decorator(func): def wrapper(*args, id, **kwargs) some_obj = SomeClass(*args, id=id, **kwargs) # тут берется id для объекта return func(operator=some_obj, *args, **kwargs) return wrapper @decorator def foo(operator): operator.its_method()
Не ожидал увидеть в ответе кого то с ником завод-декораторов😂
Но id всеравно надо передавать в функцию так как декоратор условно один, а айди могут быть разные
Если в декораторе меняется сигнатура функции — будь готов к спецэффектам. Делать так можно, но конструкцию становится сложнее понимать и чаще такое используют, когда явным образом твою функцию вызывать не будут.
Обсуждают сегодня