By: miguelgrinberg
Правильно, так как же Socket.IO узнает, что значением self должен быть этот тестовый объект, который вы создали в нижней части файла? Когда вы настраиваете свои обработчики таким образом, на самом деле нет никакой ссылки на фактический экземпляр класса Test.
Попробуйте установить обработчики после того, как создан экземпляр класса, возможно, что-то вроде этого:
def run(self):
sio.on('test', self.test)
sio.connect('ws://127.0.0.1:5000')
sio.wait()