1

我有一个使用 MVC 模式的项目。

在“模型”文件夹中,我有很多类,每个类现在都有自己的文件。但是我觉得不方便,因为每次需要使用一个类都得单独导入。例如,我的应用程序源中有许多以下内容:

from models.classX import classX
from models.classY import classY

如果我想一次导入所有东西,就像from models import *我发现我可以把各种东西import放在models/__init__.py. 但这是pythonic的方式吗?什么是约定?

4

3 回答 3

6

Python is not java; please avoid the one-file-per-class pattern. If you can't change it, you can import all of them from a submodule of your models package:

# all.py: convenient import of all the needed classes
from models.classX import classX
from models.classY import classY
...

Then in your code you can write:

import my.package.models.all as models  # or from my.package.models.all import *

and proceed to use models.classX, models.classY, etc.

于 2012-11-04T10:04:16.230 回答
0

首先,您应该重命名您的类和模块,使它们不匹配,并遵循 PEP8:

models/
    classx.py
        class ClassX
    classy.py
        class ClassY

然后,我得到了这个models/__init__.py

from models.classx import ClassX
from models.classy import ClassY

在您的主代码中,您可以执行以下任何一项操作:

from models import *
x = ClassX()
from models import ClassX
x = ClassX()
import models
x = models.ClassX()
于 2012-11-04T11:10:25.577 回答
0

大多数 Pythonic 方式是您已经在使用的方式。您可以通过将类分组到模块中来减轻导入。例如,在 Django 中,通常所有应用程序模型都在一个文件中。

来自 python文档

尽管某些模块设计为仅在您使用时导出遵循某些模式的名称import *,但在生产代码中仍然被认为是不好的做法。

于 2012-11-04T10:01:18.553 回答