on_open() missing 1 required positional argument: 'ws'

  • 问题描述

    将websocket的on_open()封装到一个类中,就会出现如题问题。

  • 解决方案

    问题出在websocket_callback方法调用上。

        def _callback(self, callback, *args):
            if callback:
                try:
                    if inspect.ismethod(callback):
                        callback(*args)
                    else:
                        callback(self, *args)
    

    默认是调用函数,然后传入参数。

    on_open(self, ws)class内的方法时,会把self也当成一个参数传给_callback,这样它就找不到想要的ws,可以把ws设置为一个类的全局变量,不需要传入到on_open中,直接从全局self.ws调用。

  • References

  1. Problem with using websocket in a class on Windows platform #469

猜你喜欢

转载自blog.csdn.net/The_Time_Runner/article/details/105870253