为什么这个 Python 模块从同一个模块导入一个 class?
Why does this Python module import a class from the same module?
我正在查看 gunicorn
的源代码,这是一个非常受欢迎的项目。
在gunicorn/app/wsgiapp.py模块中,模块定义了一个class,然后从同一个文件中导入了class:
class WSGIApplication(Application):
...
def run():
from gunicorn.app.wsgiapp import WSGIApplication
WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
class 是在上面的同一个模块中定义的。
为什么需要导入它?
如果我注释掉 run()
函数的第一行(导入行),gunicorn 运行得非常好(不会崩溃)- 至少在我 运行 的方式中它,其中:gunicorn mysite.wsgi:application
,mysite
是我的测试 Django 项目的名称。
这是一个备受瞩目的项目,如果不需要此导入,我想现在已经有人将其删除了。是否有此导入的原因?
导入确实是不必要的,尽管它也没有坏处。
如果您“git 指责”该行,您会在 this commit 中发现这个 run
函数只是从一个单独的 main.py
中复制和粘贴的,过去需要此导入才能工作。此 main.py
在同一提交中被删除。
我正在查看 gunicorn
的源代码,这是一个非常受欢迎的项目。
在gunicorn/app/wsgiapp.py模块中,模块定义了一个class,然后从同一个文件中导入了class:
class WSGIApplication(Application):
...
def run():
from gunicorn.app.wsgiapp import WSGIApplication
WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
class 是在上面的同一个模块中定义的。 为什么需要导入它?
如果我注释掉 run()
函数的第一行(导入行),gunicorn 运行得非常好(不会崩溃)- 至少在我 运行 的方式中它,其中:gunicorn mysite.wsgi:application
,mysite
是我的测试 Django 项目的名称。
这是一个备受瞩目的项目,如果不需要此导入,我想现在已经有人将其删除了。是否有此导入的原因?
导入确实是不必要的,尽管它也没有坏处。
如果您“git 指责”该行,您会在 this commit 中发现这个 run
函数只是从一个单独的 main.py
中复制和粘贴的,过去需要此导入才能工作。此 main.py
在同一提交中被删除。