2 回答
TA贡献1803条经验 获得超6个赞
我可能在这里遗漏了一些基本的东西。
不,你是对的。但是,on_open
回调不会被ws
参数调用,尽管它应该根据文档:
class WebSocketApp(object): (...) on_open: callable object which is called at opening websocket. this function has one argument. The argument is this class object. (...)
这是一个已知的错误,尽管围绕它的修复方式进行了一些讨论,但还是被关闭了。
仍然很想知道这个问题是如何出现的。
我想这是一个尝试错误修复的诚实错误。由于没有针对您的特定场景进行测试,因此没有被捕获。
我已降级到早期版本并解决了我的问题
请提交错误报告或编写拉取请求以解决问题。
我的理解是类实例方法总是将 self 作为第一个参数传递
是的,你的理解是正确的。这是一个反映您尝试过的示例。
class Server(object):
def __init__(self, callback):
self.callback = callback
def run(self):
self.callback(5)
class Client(object):
def on_message(self, n):
print("got", n)
client = Client()
server = Server(client.on_message)
server.run()
TA贡献1829条经验 获得超7个赞
看起来是 WebSocket 类没有传递您的 on_open 方法期望的 ws 参数的问题。我试图用我自己的虚拟类重现它,它工作正常。
class WS:
def __init__(self, on_call):
self.on_call = on_call
def call(self):
print("hi")
self.on_call(self)
class X:
def on_call(self, ws):
print(ws)
def run(self):
self.ws = WS(self.on_call)
self.ws.call()
X().run()
hi
<__main__.WS instance at 0x029AB698>
添加回答
举报