1

我有一个具有以下结构的 python 应用程序。

/app
  /models
    __init__.py
    profile.py
  /views
    __init__.py
    index.py
    login.py
  __init.py
main.py

目前这三个__init__.py文件都是空的。

在类似的文件index.py中,我有几个类。

class IndexHandler(webapp2.RequestHandler):
    #blah blah

我在文件中写了什么,这样我就可以在不输入完整包路径的情况下__init.py__调用类profile.py等等?index.py

4

2 回答 2

1

Python 中的命名空间是显式的。在每个__init__.py文件中,导入您希望在该包的命名空间中可用的任何模块、函数和类。

例如,如果你希望app包有一个index成员,在/app/__init__.py

from views import index

或者,如果您希望类本身成为命名空间的一部分:

from models.views import IndexHandler

这将允许您执行以下操作:

import app
handler1 = app.index.IndexHandler()  # example 1
handler1 = app.IndexHandler()  # example 2
于 2013-02-04T13:55:55.773 回答
1

从技术上讲,您不必在__init__.py文件中放入任何内容。您应该能够从main.py文件中导入模型,只要它位于 app 文件夹中,并使用以下功能:

import models    
models.profile.whatever

如果您main.py位于 /app 文件夹的“上方”,则您的 /app 文件夹中将需要一个__init__.py文件。那么你可以这样做:

import app
app.models.profile.whatever
于 2013-02-04T13:40:36.613 回答