包含同名 class 的 Python 模块在导入时如何工作?
How does a Python module that contains class of same name work when imported?
我最近在 Python 中使用 web.py 进行一些简单的 Web 应用程序。我以为我理解导入语句、包和模块是如何工作的,但现在我有点困惑。
根据 web.py 的 API,它说 class application
位于模块 web.application
内。为了使用这个class,教程给出了例子
import web
app = web.application(urls, globals())
让我感到困惑的是我如何使用 web.application
创建 application
class 的实例。如果存在一个 class application
是 里面 一个名为 application
的模块在 web 包中,根据我所学到的,我希望有做这样的事情:
web.application.application(urls, globals())
包 -> 模块 -> class
有人可以解开我的困惑吗?这是 link 到 web.py API 我正在引用 http://webpy.org/docs/0.3/api#web.application
在此先感谢您的帮助!
application.py
模块的属性已导入 web
包的 __init__.py
(通过 __all__
)。
在 web
包的 __init__.py
中,您有:
from application import * # referring to application.py
在application.py
中:
__all__ = [
"application", "auto_application",
"subdir_application", "subdomain_application",
"loadhook", "unloadhook",
"autodelegate"
]
因此,在 application.py
中找到的 __all__
中指定的属性现在可以直接从顶级导入访问 -- web
.
您可以 read more 关于 packages
、__init__.py
和 __all__
我最近在 Python 中使用 web.py 进行一些简单的 Web 应用程序。我以为我理解导入语句、包和模块是如何工作的,但现在我有点困惑。
根据 web.py 的 API,它说 class application
位于模块 web.application
内。为了使用这个class,教程给出了例子
import web
app = web.application(urls, globals())
让我感到困惑的是我如何使用 web.application
创建 application
class 的实例。如果存在一个 class application
是 里面 一个名为 application
的模块在 web 包中,根据我所学到的,我希望有做这样的事情:
web.application.application(urls, globals())
包 -> 模块 -> class
有人可以解开我的困惑吗?这是 link 到 web.py API 我正在引用 http://webpy.org/docs/0.3/api#web.application
在此先感谢您的帮助!
application.py
模块的属性已导入 web
包的 __init__.py
(通过 __all__
)。
在 web
包的 __init__.py
中,您有:
from application import * # referring to application.py
在application.py
中:
__all__ = [
"application", "auto_application",
"subdir_application", "subdomain_application",
"loadhook", "unloadhook",
"autodelegate"
]
因此,在 application.py
中找到的 __all__
中指定的属性现在可以直接从顶级导入访问 -- web
.
您可以 read more 关于 packages
、__init__.py
和 __all__