Хорошо, у меня есть класс, в котором одним из атрибутов является функция обратного вызова. Проблема в том, что всякий раз, когда я вызываю его из класса (например, как self.function_attr()
, он передается self
в качестве первого аргумента. Вот идея того, с чем я работаю:
def callback(a, b):
# do something with a, b
class A:
def __init__(self, callback):
self.callback = callback
self.callback(1, 2) # Raises a TypeError: takes exactly 2 arguments (3 given)
Я не хочу писать каждую функцию обратного вызова, чтобы self
принимал в качестве первого аргумента. Я написал декоратор, который работает вокруг проблемы:
def callback_decorator(func):
def newfunc(self, *args, **kw):
return func(*args, **kw)
return newfunc
но мне интересно, есть ли что-нибудь лучше.
По сути, мой вопрос заключается в следующем: как я могу назвать атрибуты экземпляра моего класса, которые являются функциями без их передачи self
в качестве первого аргумента?