<i id='e2qeu'><tr id='e2qeu'><dt id='e2qeu'><q id='e2qeu'><span id='e2qeu'><b id='e2qeu'><form id='e2qeu'><ins id='e2qeu'></ins><ul id='e2qeu'></ul><sub id='e2qeu'></sub></form><legend id='e2qeu'></legend><bdo id='e2qeu'><pre id='e2qeu'><center id='e2qeu'></center></pre></bdo></b><th id='e2qeu'></th></span></q></dt></tr></i><div id='e2qeu'><tfoot id='e2qeu'></tfoot><dl id='e2qeu'><fieldset id='e2qeu'></fieldset></dl></div>

    <small id='e2qeu'></small><noframes id='e2qeu'>

    • <bdo id='e2qeu'></bdo><ul id='e2qeu'></ul>
    <tfoot id='e2qeu'></tfoot>

    1. <legend id='e2qeu'><style id='e2qeu'><dir id='e2qeu'><q id='e2qeu'></q></dir></style></legend>

        如何编写好的/正确的包 __init__.py 文件

        时间:2023-09-14

        • <bdo id='6oEWP'></bdo><ul id='6oEWP'></ul>
            <tbody id='6oEWP'></tbody>
              <i id='6oEWP'><tr id='6oEWP'><dt id='6oEWP'><q id='6oEWP'><span id='6oEWP'><b id='6oEWP'><form id='6oEWP'><ins id='6oEWP'></ins><ul id='6oEWP'></ul><sub id='6oEWP'></sub></form><legend id='6oEWP'></legend><bdo id='6oEWP'><pre id='6oEWP'><center id='6oEWP'></center></pre></bdo></b><th id='6oEWP'></th></span></q></dt></tr></i><div id='6oEWP'><tfoot id='6oEWP'></tfoot><dl id='6oEWP'><fieldset id='6oEWP'></fieldset></dl></div>
                <legend id='6oEWP'><style id='6oEWP'><dir id='6oEWP'><q id='6oEWP'></q></dir></style></legend>
              • <tfoot id='6oEWP'></tfoot>

                <small id='6oEWP'></small><noframes id='6oEWP'>

                  本文介绍了如何编写好的/正确的包 __init__.py 文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我的包有以下结构:

                  mobilescouter/
                      __init__.py #1
                      mapper/
                          __init__.py  #2
                          lxml/
                              __init__.py #3
                              vehiclemapper.py
                              vehiclefeaturemapper.py
                              vehiclefeaturesetmapper.py
                          ...
                          basemapper.py
                     vehicle/
                          __init__.py #4
                          vehicle.py
                          vehiclefeature.py
                          vehiclefeaturemapper.py
                     ...
                  

                  我不确定应该如何正确编写 __init__.py 文件.
                  __init__.py #1 看起来像:

                  I'm not sure how the __init__.py files should be correctly written.
                  The __init__.py #1 looks like:

                  __all__ = ['mapper', 'vehicle']
                  import mapper
                  import vehicle
                  

                  但是例如 __init__.py #2 应该是什么样子?我的是:

                  But how should for example __init__.py #2 look like? Mine is:

                  __all__ = ['basemapper', 'lxml']
                  from basemaper import *
                  import lxml
                  

                  什么时候应该使用 __all__?

                  推荐答案

                  __all__ 非常好 - 它有助于指导导入语句而不自动导入模块http://docs.python.org/tutorial/modules.html#importing-from-a-package

                  __all__ is very good - it helps guide import statements without automatically importing modules http://docs.python.org/tutorial/modules.html#importing-from-a-package

                  使用 __all__import * 是多余的,只需要 __all__

                  using __all__ and import * is redundant, only __all__ is needed

                  我认为在 __init__.py 中使用 import * 来导入包的最有力的原因之一是能够重构已经成长为多个的脚本在不破坏现有应用程序的情况下编写脚本.但是如果你从一开始就设计一个包.我认为最好将 __init__.py 文件留空.

                  I think one of the most powerful reasons to use import * in an __init__.py to import packages is to be able to refactor a script that has grown into multiple scripts without breaking an existing application. But if you're designing a package from the start. I think it's best to leave __init__.py files empty.

                  例如:

                  foo.py - contains classes related to foo such as fooFactory, tallFoo, shortFoo
                  

                  然后应用程序增长,现在它是一个完整的文件夹

                  then the app grows and now it's a whole folder

                  foo/
                      __init__.py
                      foofactories.py
                      tallFoos.py
                      shortfoos.py
                      mediumfoos.py
                      santaslittlehelperfoo.py
                      superawsomefoo.py
                      anotherfoo.py
                  

                  那么初始化脚本可以说

                  __all__ = ['foofactories', 'tallFoos', 'shortfoos', 'medumfoos',
                             'santaslittlehelperfoo', 'superawsomefoo', 'anotherfoo']
                  # deprecated to keep older scripts who import this from breaking
                  from foo.foofactories import fooFactory
                  from foo.tallfoos import tallFoo
                  from foo.shortfoos import shortFoo
                  

                  以便为执行以下操作而编写的脚本在更改期间不会中断:

                  so that a script written to do the following does not break during the change:

                  from foo import fooFactory, tallFoo, shortFoo
                  

                  这篇关于如何编写好的/正确的包 __init__.py 文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:在 Cython 中制作可执行文件 下一篇:Python 错误:AttributeError:“模块"对象没有属性

                  相关文章

                  最新文章

                  1. <i id='HuWU7'><tr id='HuWU7'><dt id='HuWU7'><q id='HuWU7'><span id='HuWU7'><b id='HuWU7'><form id='HuWU7'><ins id='HuWU7'></ins><ul id='HuWU7'></ul><sub id='HuWU7'></sub></form><legend id='HuWU7'></legend><bdo id='HuWU7'><pre id='HuWU7'><center id='HuWU7'></center></pre></bdo></b><th id='HuWU7'></th></span></q></dt></tr></i><div id='HuWU7'><tfoot id='HuWU7'></tfoot><dl id='HuWU7'><fieldset id='HuWU7'></fieldset></dl></div>
                      <bdo id='HuWU7'></bdo><ul id='HuWU7'></ul>

                  2. <small id='HuWU7'></small><noframes id='HuWU7'>

                  3. <legend id='HuWU7'><style id='HuWU7'><dir id='HuWU7'><q id='HuWU7'></q></dir></style></legend>
                    <tfoot id='HuWU7'></tfoot>