Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,如何从包含多个类的文件中导入一个类?_Python_Python 3.x_Syntax_Import_Classnotfoundexception - Fatal编程技术网

在Python中,如何从包含多个类的文件中导入一个类?

在Python中,如何从包含多个类的文件中导入一个类?,python,python-3.x,syntax,import,classnotfoundexception,Python,Python 3.x,Syntax,Import,Classnotfoundexception,我对语法感到困惑: import module.package from module import package 文件引用的是另一个文件夹,还是我应该将其用于同一文件中多个类中的一个类?包是指包含名为\uuu init\uuuuuuuuuupy.py的最高层文件的任何目录。模块是任何扩展名为.py的Python文件 从这些定义中,您可能会发现模块不能包含包。反之亦然;包包含模块。模块只能包含绑定到Python对象(类、函数等)的名称 导入包时,只需执行\uuuu init\uuuu.py文

我对语法感到困惑:

import module.package
from module import package

文件引用的是另一个文件夹,还是我应该将其用于同一文件中多个类中的一个类?

包是指包含名为
\uuu init\uuuuuuuuuupy.py的最高层文件的任何目录。模块是任何扩展名为
.py
的Python文件

从这些定义中,您可能会发现模块不能包含包。反之亦然;包包含模块。模块只能包含绑定到Python对象(类、函数等)的名称

导入包时,只需执行
\uuuu init\uuuu.py
文件。导入模块时,只需执行模块文件本身。当您使用类似于“从程序包导入模块导入代码”或“从程序包导入程序包.module导入代码”之类的方法从程序包导入模块时,您可以从程序包执行
\uuuuu init\uuuuuuuuupy
,也可以从模块文件本身执行

要仅从模块导入类,必须使用
from X import Y
语句,其中X是
[package1.[subpackage2.]]modulename
,而
Y
是绑定到要导入到名称中的对象的名称。请注意,即使在执行此类导入时,
\uuuuu init\uuuuu.py
和整个模块脚本仍将被执行。唯一的区别是添加到名称空间的内容,而名称空间正是
Y
所指向的对象

注意,
fromximporty
语句有点奇怪。因为如果
X
引用一个包,那么
Y
可以引用包中的模块。为了克服这种混淆,最好将包和模块视为名称空间。最大的区别是包是模块的名称空间,模块是具体Python对象的名称空间

值得注意的是,您可以使用逗号从一个命名空间导入多个名称:

从集合导入订单信息,计数器

此外,还可以从命名空间导入所有名称:

从itertools导入*


但是,不建议这样做,因为它不必要地污染了名称空间。对于Python标准库,这基本上是可以的,因为您不太可能与
takewhile
之类的东西发生名称冲突,但是如果您正在处理一个包含多个库的大型项目,最好保持名称空间尽可能干净,以避免冲突。

包是任何目录,其中包含名为
\uuu init\uuuuuuuuy.py的最高层文件。模块是任何扩展名为
.py
的Python文件

从这些定义中,您可能会发现模块不能包含包。反之亦然;包包含模块。模块只能包含绑定到Python对象(类、函数等)的名称

导入包时,只需执行
\uuuu init\uuuu.py
文件。导入模块时,只需执行模块文件本身。当您使用类似于“从程序包导入模块导入代码”或“从程序包导入程序包.module导入代码”之类的方法从程序包导入模块时,您可以从程序包执行
\uuuuu init\uuuuuuuuupy
,也可以从模块文件本身执行

要仅从模块导入类,必须使用
from X import Y
语句,其中X是
[package1.[subpackage2.]]modulename
,而
Y
是绑定到要导入到名称中的对象的名称。请注意,即使在执行此类导入时,
\uuuuu init\uuuuu.py
和整个模块脚本仍将被执行。唯一的区别是添加到名称空间的内容,而名称空间正是
Y
所指向的对象

注意,
fromximporty
语句有点奇怪。因为如果
X
引用一个包,那么
Y
可以引用包中的模块。为了克服这种混淆,最好将包和模块视为名称空间。最大的区别是包是模块的名称空间,模块是具体Python对象的名称空间

值得注意的是,您可以使用逗号从一个命名空间导入多个名称:

从集合导入订单信息,计数器

此外,还可以从命名空间导入所有名称:

从itertools导入*

但是,不建议这样做,因为它不必要地污染了名称空间。对于Python标准库,这基本上是可以的,因为您不太可能与
takewhile
之类的东西发生名称冲突,但是如果您正在处理一个包含多个库的大型项目,最好保持名称空间尽可能干净,以避免冲突