我有一个具有以下结构的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
等中的类,而无需输入完整的包路径?
答案 0 :(得分:1)
从技术上讲,您不必在__init__.py
文件中放置任何内容。您应该可以从main.py
文件中导入模型,只要它位于app文件夹中,并使用以下函数:
import models
models.profile.whatever
如果main.py
位于/ app文件夹的“上方”,则/ app文件夹中需要__init__.py
个文件。那么你可以这样做:
import app
app.models.profile.whatever
答案 1 :(得分: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