繁体   English   中英

合理化 python 中的 package 结构

[英]Rationalising package structure in python

我正在开发具有以下结构的 python 库

/application
  /lib
  __init__.py
    /models
    __init__.py
    model1.py
    model2.py
    model3.py

在每个 model%.py 文件中都有一个对应的 class 命名为 Model%。 我喜欢将这些类保存在自己的文件中,但这意味着在我的应用程序中,我需要从模型 package 中导入类,就像这样

from models.model1 import Model1
from models.model2 import Model2
from models.model3 import Model3

有没有办法做到这一点?

from models import Model1, Model2, Model3

它感觉更直观,更像我正在做的事情。 我有一个 package 称为模型,我希望它包含这些类,但我仍然希望每个 class 都有自己的文件,因此我可以通过简单地添加文件来添加新模型。

以前我把它放在我的 /application/lib/models/_ init _py 文件中

from model1 import Model1
from model2 import Model2
from model3 import Model3

但我知道这是导入所有类,即使我只需要其中一个

您的最终解决方案是正确的。 如果它会导致严重的性能问题,你应该只担心加载太多的类,我非常怀疑。

一种方法是在您的模型目录中创建一个文件来导入您的类,然后从该文件中导入。 例如,您可以创建一个名为api.py的文件,其中包含

from model1 import Model1
from model2 import Model2
from model3 import Model3

然后你可以像这样导入模型

from models.api import Model1, Model2, Model3

为每个模块创建单独的 package。 model1.py放入model1 package。 model1 package的__init__.py文件中,放

from model1 import Model1

那么,你将能够做到

from model1 import Model1

从您的应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM