У меня есть класс Python со многими методами с подписью:Украсьте метод питона с дополнительным аргументом
def select_xxx(self, arg1 , arg2 , .. argn, intersect = False)
Т.е. методы имеют переменное (1-3) число позиционных аргументов, а необязательный аргумент пересекается со значением по умолчанию False. Я хотел бы украсить все эти методы декоратором, который будет игнорировать значение параметра пересечения и предпринять различные действия соответственно. Мой текущий подход что-то вроде этого:
def select_decorator(select_method):
def select_wrapper(self , *args, intersect = False , **kwargs)
if intersect:
# Special init code for intersect == True
select_method(self , *args , **kwargs)
else:
# Normal call path for intersect == False
select_method(self , *args , **kwargs)
return select_wrapper
@select_decorator
select_xxx(self , arg1 , arg2 , intersect = False)
Но получить дополнительный аргумент пересекаться в * арг и ** kwargs смешивать внутри декоратор в настоящее время нет радости. Я мог бы пожертвовать функциональностью ** kwargs, если это облегчит задачу. Какие-либо предложения?
Йоаким
Если вам нужна дополнительная помощь с декораторами и аннотациями, см. Мой блог здесь. http://blog.mattalcock.com/2013/1/5/decorates-and-annotations/ –