Обратный вызов Python внутри класса - PullRequest
4 голосов
/ 12 декабря 2011

Я регистрирую pysvn.Client.callback_get_login callback , но я хочу, чтобы мой обратный вызов определялся в моем классе как метод, а не как глобальная функция.

Итак, в моем классе я хочу что-то вроде:

self.client = pysvn.Client()
self.client.callback_get_login = self.get_login

вместо

self.client = pysvn.Client()
self.client.callback_get_login = get_login

Но в 1-м фрагменте я получаю сообщение об ошибке:

pysvn._pysvn_2_7.ClientError: unhandled exception in callback_get_login

Есть ли способ назначить обратный вызов внутри класса?

1 Ответ

6 голосов
/ 12 декабря 2011

Я столкнулся с той же проблемой и решил ее, создав закрытие для моей функции входа в систему:

class DummyClient:
   def __init__(self):
      def callback_get_login(realm, username, may_save):
         name = raw_input("Enter your svn login : ")
         password = getpass.getpass("Enter your svn password :")
         return True, name, password, False
      self.client.callback_get_login = callback_get_login
...