У меня есть диспетчер, который вызывает обратные вызовы с двумя аргументами:
class Foo:
def register(self, callback):
self.callback = callback
def _handle(self):
self.callback(x, y)
I wi sh, чтобы исключить второй аргумент, и вместо этого отправить только один аргумент:
def _handle(self):
self.callback(x)
Как я могу отказаться от старого обратного вызова, не нарушая код в течение периода миграции?
Большинство способов отказаться от использования включают игнорирование аргумента и отправку DeprecationWarning. В этом случае это не сработает, так как я должен отправить все параметры в случае регистрации более старого обратного вызова.
Другими способами являются проверка подписи (которая не будет надежной) или создание другой функции register()
или new_callback
параметр, который выглядит как запах кода.