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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了`__init __。py`导入多个模块,而文件中没有使用它们相关的知识,希望对你有一定的参考价值。

我正在读/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如何实现这个目标?

答案

__init__.py导入多个模块

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

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

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

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

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

Django如何实现这一目标?

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

以上是关于`__init __。py`导入多个模块,而文件中没有使用它们的主要内容,如果未能解决你的问题,请参考以下文章

Python __init__.py 作用详解

三 Flask+ MySQL 数据库操作

一些模塊的用法

__init__.py 导入还公开了我使用的模块,不仅是我自己的类[重复]

8.1包,__init__.py,

包和日志模块的使用