导入时包含同名类的Python模块如何工作?

时间:2016-06-23 16:11:03

标签: python python-2.7 web.py

我最近一直在使用web.py来处理Python中的一些简单的Web应用程序。我以为我理解了import语句,包和模块是如何工作的,但现在我有点困惑。

根据web.py的API,它表示类application位于模块web.application内。为了使用这个类,本教程提供了诸如

之类的示例
import web
app = web.application(urls, globals())

让我感到困惑的是我如何使用application创建web.application类的实例。如果在网络包中存在一个名为application内部的类application,那么根据我的学习,我希望必须这样做:< / p>

web.application.application(urls, globals())

包裹 - &gt;模块 - &gt;类

有人可以澄清我的困惑吗?这是我引用的{。3}}

的web.py API的链接

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

application.py模块的属性已导入__init__.py包的web(通过__all__)。

__init__.py包的web中,您有:

from application import * # referring to application.py

application.py

__all__ = [
    "application", "auto_application",
    "subdir_application", "subdomain_application", 
    "loadhook", "unloadhook",
    "autodelegate"
]

因此,现在可以直接从顶级导入__all__访问application.py中找到的web中指定的属性。

您可以read more关于packages__init__.py__all__