我正在阅读python项目的sourcode,并遇到以下行:
from couchexport.export import Format
Run Code Online (Sandbox Code Playgroud)
(来源:https://github.com/wbnigeria/couchexport/blob/master/couchexport/views.py#L1)
我去couchexport/export.py
看看是什么Format
(Class?Dict?还有什么?).不幸的Format
是不在那个文件中. export.py
然而不导入Format
从couchexport.models那里是一个Format
类(来源:https://github.com/wbnigeria/couchexport/blob/master/couchexport/models.py#L11).
当我在IDE中打开原始文件并让它查找声明时,在本问题开头提到的第一行中,它直接导致models.py.
这是怎么回事?如何从一个文件(export.py
)导入实际上是从另一个文件(models.py
)导入而没有明确说明?
Nik*_* B. 17
如果模块a
执行a from b import Foo
,则之后Foo
是成员,a
并且可以访问a.Foo
.现在只能使用它来导入它from a import Foo
.
如果您有一个跨多个文件分布的大型库,并且您希望可以从一个位置访问它们,则通常会使用此方法.假设您有一个包含foo
以下布局的包:
foo/
a.py
b.py
c.py
__init__.py
Run Code Online (Sandbox Code Playgroud)
a.py
,b.py
,c.py
,定义类A
,B
和C
分别.
如果你想使用这些类,通常你必须写
from foo.a import A
from foo.b import B
from foo.c import C
Run Code Online (Sandbox Code Playgroud)
这至少有两个问题:
所以通常你只需将以下内容放入__init__.py
:
from a import A
from b import B
from c import C
Run Code Online (Sandbox Code Playgroud)
现在,您将所有部分放在一个位置,并且只需一次导入即可访问所有类:
from foo import A,B,C
Run Code Online (Sandbox Code Playgroud)