После изменения вашего примера кода, чтобы он работал без внешних зависимостей (и фактически оборачивал функцию), мне кажется, что ваши аргументы во время выполнения могут просто не соответствовать вашим ожиданиям.
Поскольку вывключая self
, похоже, это метод;из-за этого self
будет первым аргументом, передаваемым вашей обёртке, которая, вероятно, ожидает, что она будет info
.
def authenticate_role(func):
def wrap(*args, **kwargs):
print(args)
print(kwargs)
return func(*args, **kwargs)
return wrap
class Test(object):
@authenticate_role
def resolve_all_users(self, info, *args, **kwargs):
print("In r_a_u:", info)
Test().resolve_all_users("info", "ar", "gs", a="b", c="d")
# (<__main__.Test object at 0x...>, 'info', 'ar', 'gs')
# {'c': 'd', 'a': 'b'}
# In r_a_u: info
Трудно сказать, какая часть этого должна быть релевантной, так какВаш пример на самом деле не дает ясного представления о том, как на самом деле выглядит ваш код и каковы ваши результаты, но он должен поставить вас на правильный путь.