Python 如果socketio实例是类成员变量,如何用flask socketio修饰类函数?
我正在尝试使用socketio为flask应用程序创建一个hello world示例,该应用程序被包装到一个类中 我想将整个应用程序封装到一个类中,该类可以嵌入到其他应用程序中。为此,我将在类的构造函数中创建Flask应用程序,并将SocketIO实例作为成员创建。 问题是我得到一个NameError异常,告诉我没有定义“socketio” 我已经尝试改编了《flask socketio教程》() 下面是我试图开始工作的示例代码:Python 如果socketio实例是类成员变量,如何用flask socketio修饰类函数?,python,flask,flask-socketio,Python,Flask,Flask Socketio,我正在尝试使用socketio为flask应用程序创建一个hello world示例,该应用程序被包装到一个类中 我想将整个应用程序封装到一个类中,该类可以嵌入到其他应用程序中。为此,我将在类的构造函数中创建Flask应用程序,并将SocketIO实例作为成员创建。 问题是我得到一个NameError异常,告诉我没有定义“socketio” 我已经尝试改编了《flask socketio教程》() 下面是我试图开始工作的示例代码: 从烧瓶导入烧瓶 从flask_socketio导入socketi
从烧瓶导入烧瓶
从flask_socketio导入socketio,发射
类应用程序示例:
定义初始化(自):
self.app=烧瓶(_名称__)
self.socketio=socketio(self.app)
@socketio.on('ping')
def pongResponse(自我,信息):
发出('pong')
def运行(自):
self.socketio.run(service.app,host='0.0.0')
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
服务=应用程序示例()
service.run()
我想将pongResponse函数绑定到我的类中的socketio实例。当SocketIO类作为成员时,如何修饰函数?因为修饰函数只需调用修饰函数并将修饰函数作为第一个参数传递,您可以编写:
def __init__(self):
...
self.pongResponse = self.socketio.on('ping')(self._pongResponse)
def _pongResponse(self, message):
...
以
开头的方法表示它不是类的公共API的一部分(因此这只是一种约定)。还请注意,在python中,您应该使用snake\u case
而不是camelCase
来命名函数和变量,尽管这也是一种惯例。根据文档,您可以使用下面的名称而不是装饰符
def my_function_处理程序(数据):
通过
on_event('my event',my_function_handler,namespace='/test')
这会变成
从烧瓶导入烧瓶
从flask_socketio导入socketio,发射
类应用程序示例:
定义初始化(自):
self.app=烧瓶(_名称__)
self.socketio=socketio(self.app)
self.socketio.on_事件('ping',self.pongressponse,namespace='/test')
def pongResponse(自我,信息):
发出('pong')
def运行(自):
self.socketio.run(service.app,host='0.0.0')