关于 Flask 扩展对象初始化的问题?

2015-11-26 01:00:59 +08:00
 woz24416
在 Flasl Web 开发一书中,将程序结构化,将配置分层,并将程序实例放在工厂函数中,代码如下:

class Config:
@staticmethod
def init_app(app):
pass


def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config[config_name])
config[config_name].init_app(app)
bootstrap.init_app(app)
mail.init_app(app)
moment.init_app(app)
db.init_app(app)


不明白的是: init_app 实在 config 类中定义的, config[config_name]调用 init_app(app)就可以理解,但扩展对象怎么能够调用呢?在 cofig 类(基类和子类)中没有看到和扩展对象有关的的定义啊? config[config_name]调用 init_app(app)就可以理解

ps :上述代码忽略了一些导入代码和 boostrap = Bootstrap()一类的代码

非常感谢哪位能够指导一下!!!
2481 次点击
所在节点    Python
2 条回复
halfcrazy
2015-11-26 01:32:25 +08:00
init_app 是一般 extension 会实现的一个方法,用来加载拓展到 app 上
woz24416
2015-11-26 02:27:16 +08:00
@halfcrazy 感谢,的确是每个扩展自己的一个方法

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/238972

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX