代码之家  ›  专栏  ›  技术社区  ›  Wizard

“\uu init\uuuu”。py `导入文件中未使用的多个模块

  •  0
  • Wizard  · 技术社区  · 6 年前

    我在读书 /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是如何做到这一点的?

    1 回复  |  直到 6 年前
        1
  •  3
  •   bruno desthuilliers    6 年前

    这个 __init__.py 导入多个模块

    s/模块/名称 from somemodule import somename 语法公开了 somename 名称,不是 somemodule

    而它们在文件中没有使用。 我想他们可能被住在同一个地区的其他人雇用

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

    1/用户只需从 django.forms 无需关心底层模块/子包层次结构,

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

    Django是如何做到这一点的?

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