我用的是 tornado
我定义了一个 HandlerBase
from proj import consts, models, exceptions
from tornado import web
class HandlerBase(web.RequestHandler):
   f_consts= consts
   f_models = models
   f_exceptions = exceptions
这个样子是有什么问题吗? 
我的目的是因为
基本上 Handler 都需要用到这些 module,
因为不知道这么做有什么问题,我现在只在测试里面这么写了
|  |      1hareandlion      2020-09-01 09:47:05 +08:00  1 被 import 的“models”是个单例对象,作为 HandlerBase 中的类变量,被多个`HandlerBase`同时访问时可能造成内存泄漏,如果已经做过相关处理,或者 models 是公共数据,本就允许这样使用,那没问题 | 
|  |      2fasionchan      2020-09-01 09:49:14 +08:00  1 一般没有什么问题。但是,如果这些变量是描述符(descriptor,实现了__get__ __set__ __del__ 魔术方法)的话,属性查找行为需要留意。具体可以研究下 Python 类机制以及数据描述符的特性: https://www.imooc.com/read/76/article/1928 | 
|      3chenqh OP @hareandlion models 就是一个 module 下面的文件是这样的结构 ``` model_user.py model_user_token.py model_log.py __init__.py ``` | 
|      4Hieast      2020-09-02 23:40:43 +08:00 首先虽然你描述用的是 module,但是 3l 的例子说明其实你 import 的是 package 包,这里概念有问题。 另外就算技术上没有问题,但是业务上为什么要这么做? 假如业务会增长,你的 consts, models, exceptions 肯定要根据业务领域再次分成不同的包,但是 HandlerBase 应该是整个项目通用的,这里有矛盾。 假如业务不会增长,本来也没有几个 handler,直接导入也不复杂吧? | 
|      6xchaoinfo      2020-09-04 16:11:18 +08:00 为了导入方便的话, 在 __init__ 重新定义 __all__  , 然后 from xxx import * |