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>
添加回答
舉報