Python 3.x 如何在python中的Flask中创建实用程序类的公共实例?

Python 3.x 如何在python中的Flask中创建实用程序类的公共实例?,python-3.x,flask,Python 3.x,Flask,我有一个有多条路线的烧瓶应用程序。我已经定义了一个实用类,其中包含一些处理公共功能的方法,例如获取一些属性等。现在我想在每个路由中的函数使用的公共位置创建实用类的实例。我如何做到这一点 from flask import Flask, request, jsonify import mysql.connector as mariadb app = Flask(__name__) @app.route('/aaa/bbb/ccc',methods=['POST']) def func1():

我有一个有多条路线的烧瓶应用程序。我已经定义了一个实用类,其中包含一些处理公共功能的方法,例如获取一些属性等。现在我想在每个路由中的函数使用的公共位置创建实用类的实例。我如何做到这一点

from flask import Flask, request, jsonify
import mysql.connector as mariadb

app = Flask(__name__)

@app.route('/aaa/bbb/ccc',methods=['POST'])
def func1():
  pass
@app.route('/xxx/yyy/zzz',methods=['POST'])
def func2():
  pass
@app.route('/abc/dfg/ijk',methods=['POST'])
def func3():
  pass

class Utility:
    def get_properties():
       pass
    def get_database_conn():
       pass

if __name__ == "__main__":
    app.run(host='127.0.0.1', port=5000, debug=True)
现在,我想做一些像-

util_obj = Utility()
在应用程序的开始,这样我就可以从我的任何路由调用实用程序方法,而不必每次都创建对象


实现这一点的最佳方法是什么?

您所描述的内容似乎与Flask的大多数扩展(如Flask SQLAlchemy或Flask Caching)遵循相同的结构,即拥有一个全局配置的实例,以便在必要时导入或调用

from flask import Flask, request, jsonify
import mysql.connector as mariadb

app = Flask(__name__)

@app.route('/aaa/bbb/ccc',methods=['POST'])
def func1():
  pass
@app.route('/xxx/yyy/zzz',methods=['POST'])
def func2():
  pass
@app.route('/abc/dfg/ijk',methods=['POST'])
def func3():
  pass

class Utility:
    def get_properties():
       pass
    def get_database_conn():
       pass

if __name__ == "__main__":
    app.run(host='127.0.0.1', port=5000, debug=True)
在大型应用程序中,您可以在像
extensions.py
这样的文件中创建这些实例,远离创建
app
的位置,以避免循环导入,但对于单个文件,您不必担心这一点。相反,我只需将
实用程序的类定义移动到定义
应用程序的下方,并在类定义的正下方创建
util_obj

从烧瓶导入烧瓶,请求,jsonify
将mysql.connector作为mariadb导入
app=烧瓶(名称)
类别实用程序:
def get_属性():
#你可以在这里访问应用程序!
通过
def get_数据库_conn():
通过
util_obj=实用工具()
@app.route('/aaa/bbb/ccc',methods=['POST'])
def func1():
#您可以在这里访问util_obj!
通过
@app.route('/xxx/yyy/zzz',methods=['POST'])
def func2():
通过
@app.route('/abc/dfg/ijk',methods=['POST'])
def func3():
通过
如果名称=“\uuuuu main\uuuuuuuu”:
app.run(host='127.0.0.1',port=5000,debug=True)