На ваши два вопроса:
1) Как мне отладить это?
1) Первое, что я бы попробовал, было бы проверить, правильно ли вы определили объявление аргумента для вашей функции (у вас). Для этого я добавил бы к вашей функции *args
и **kwargs
, а затем запустил код, чтобы проверить, работает ли он:
def triggered(self, *args, **kwargs):
print("got triggered " + self.command.id + " " + repr(checked) + " [extra args: {}, kwargs: {}".format(args, kwargs))
Могу поспорить, вы обнаружите, что вы получаете логическое значение в качестве первого аргумента функции, но ваша функция была объявлена как не принимающая ничего. Возможно, исключение было зарегистрировано в stderr или проглочено.
2) Я создал простой декоратор для удобства записи таких вещей:
import functools, sys
def logged_action(func):
@functools.wraps(func)
def wrapped(*args, **kwargs):
sys.stderr.write("{}: {}, {}\n".format(func, args, kwargs))
return func(*args, **kwargs)
return wrapped
@logged_action
def triggered(self, *args, **kwargs):
print("got triggered " + self.command.id + " " + repr(checked))
2) (или, что я делаю не так)
Ваш подключенный метод не имеет правильной подписи, основываясь на моем опыте с примером, который я должен был передать:
Traceback (most recent call last):
File "[redacted]", line 12, in wrapped
return func(*args, **kwargs)
TypeError: triggered() takes exactly 1 argument (2 given)
triggered
вызывается с самим собой и другим аргументом (отсюда «2 дано»), но вы только заявляете, что берете один.