`__init __。py`导入多个模块,而文件中没有使用它们

问题描述 投票:0回答:1

我正在读/django/forms/__init__.py

"""
Django validation and HTML form handling.
"""

from django.core.exceptions import ValidationError  # NOQA
from django.forms.boundfield import *  # NOQA
from django.forms.fields import *  # NOQA
from django.forms.forms import *  # NOQA
from django.forms.formsets import *  # NOQA
from django.forms.models import *  # NOQA
from django.forms.widgets import *  # NOQA

__init__.py导入多个模块,而文件中没有使用它们。

我想他们可能会被其他人住在同一个目录中,Django如何实现这个目标?

django design-patterns facade
1个回答
3
投票

__init__.py导入多个模块

s / modules / names / - from somemodule import somename语法暴露了somename名称,而不是somemodule

虽然他们没有在文件中使用。我认为他们可能会被住在同一个目录的其他人雇用

实际上这是一个被称为“facade”的设计模式--forms包隐藏了它的内部实现(其中子模块/子包是定义的)所以

1 /用户只需从django.forms导入他们需要的内容,而无需关心底层模块/子包层次结构,

2 / mainainers可以在不破坏客户端代码的情况下重新组织底层模块/子包层次结构。

Django如何实现这一目标?

这不是Django特有的,它只是普通的普通Python。阅读Python关于模块和包的文档。

© www.soinside.com 2019 - 2024. All rights reserved.