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

在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()一类的代码

非常感谢哪位能够指导一下!!!

8 comments