Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果socketio实例是类成员变量,如何用flask socketio修饰类函数?_Python_Flask_Flask Socketio - Fatal编程技术网

Python 如果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

我正在尝试使用socketio为flask应用程序创建一个hello world示例,该应用程序被包装到一个类中

我想将整个应用程序封装到一个类中,该类可以嵌入到其他应用程序中。为此,我将在类的构造函数中创建Flask应用程序,并将SocketIO实例作为成员创建。 问题是我得到一个NameError异常,告诉我没有定义“socketio”

我已经尝试改编了《flask socketio教程》()

下面是我试图开始工作的示例代码:

从烧瓶导入烧瓶
从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')