6

我正在开发一个 Python App Engine 应用程序,我想将源代码文件的内容拆分Models.py为每个模型的单独文件,但我想将它们全部放在一个名为 Models 的文件夹中。问题是当我这样做时,我的应用程序再也找不到这些类了。我该怎么办?

这个问题不是关于 MVC而是另一个同名的问题是.

4

3 回答 3

12

在 Models 目录中放置一个空__init__.py文件。

然后,在您的应用程序中;大概上一层,您可以像这样引用 Models 目录中的模块:

import Models

并用它做这样的事情:

Models.my_model.MyClassName

你也可以from像这样使用关键字:

from Models import my_model

和这样的参考:

my_model.MyClassName

如果您只需要模块中的一种方法,您也可以这样做:

from Models.my_model import my_method_name
my_method_name()

文档的强制性链接。

于 2010-02-13T01:27:44.600 回答
4

为了回应您对亚当的回答的评论,关于 10 个类的 10 个导入,首先不要忘记 Python 中的每个模块不需要一个类。模块应该按功能组织,因此如果有意义的话,您可以将相关的类分组到一个文件中。

如果您仍然想一次性导入所有类,您可以使用语法将它们全部导入__init__.py文件本身,然后只需导入包含模块 -并引用etc,甚至使用将类直接导入您的命名空间并直接引用它们。from submodule import Classimport mainmodulemainmodule.Class1from mainmodule import Class1, Class2, Class3

于 2010-02-13T11:58:43.270 回答
1

Adam Bernier 对包的工作方式进行了很好的技术描述。http://jcalderone.livejournal.com/39794.html中详细描述了如何安排和交付项目

于 2010-02-13T02:12:09.353 回答