类内部的Python回调

4 投票
1 回答
4756 浏览
提问于 2025-04-17 08:12

我正在注册一个叫做 pysvn.Client.callback_get_login 的回调函数,但是我希望这个回调函数能在我的类里面定义,作为一个方法,而不是一个全局函数。

所以,在我的类里面我想要有这样的东西:

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

而不是:

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

但是在第一个代码片段中,我遇到了错误:

pysvn._pysvn_2_7.ClientError: unhandled exception in callback_get_login

有没有办法把回调函数放在类里面呢?

1 个回答

6

我也遇到了同样的问题,后来通过为我的登录函数创建一个闭包来解决了这个问题:

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

撰写回答