Python将源于一个模块的对象从另一个模块导入第三个模块
我正在阅读一个python项目的sourcode,遇到了以下几行代码:Python将源于一个模块的对象从另一个模块导入第三个模块,python,import,Python,Import,我正在阅读一个python项目的sourcode,遇到了以下几行代码: from couchexport.export import Format (来源:) 我转到couchexport/export.py查看格式是什么(Class?Dict?其他什么?)。不幸的是,格式不在该文件中export.py会从couchexport.models导入格式,其中有格式类(来源:) 当我在IDE中打开原始文件并让它查找声明时,正如我在本问题开始时提到的,它直接指向models.py 发生什么事了?如果
from couchexport.export import Format
(来源:)
我转到couchexport/export.py
查看格式是什么(Class?Dict?其他什么?)。不幸的是,格式
不在该文件中<但是,code>export.py
会从couchexport.models导入格式
,其中有格式
类(来源:)
当我在IDE中打开原始文件并让它查找声明时,正如我在本问题开始时提到的,它直接指向models.py
发生什么事了?如果模块
a
从b导入Foo,那么Foo
是a
之后的成员,并且可以作为a.Foo
访问,那么从一个文件导入(export.py
)怎么可能实际上是从另一个文件导入(models.py
)。现在,您也可以使用import Foo中的导入它,这是唯一的结果
如果您有一个大型库分布在多个文件中,并且希望从单个位置访问这些文件,则通常使用此方法。假设您有一个具有以下布局的包foo
:
foo/
a.py
b.py
c.py
__init__.py
a.py
,b.py
,c.py
,分别定义类a
,b
和c
如果您想使用这些类,通常必须编写
from foo.a import A
from foo.b import B
from foo.c import C
这至少有两个问题:
这个简单的导入需要很多代码(三行)
库作者现在不能再更改文件/类关联,因为这会破坏现有代码李>
因此,通常您只需将以下内容放入\uuuu init\uuuu.py
:
from a import A
from b import B
from c import C
现在,您将所有部分放在一个地方,所有类都可以通过一次导入访问:
from foo import A,B,C
我不确定问题1在说什么。我认为这可能是一个未翻译的习语,但由于type
在Python中也有某种含义,我不确定。:^)谢谢你的回复。这是一个很好的解释!