gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 08:56:47 24 4
gpt4 key购买 nike

我对语法感到困惑:

import module.package
from module import package

from 是否引用了另一个文件夹,或者我应该将它用于同一文件中多个类中的一个类?

最佳答案

包是在最上层包含名为 __init__.py 的文件的任何目录。模块是任何具有 .py 扩展名的 Python 文件。

从这些定义中,您可能会发现模块不能包含包。恰恰相反;包包含模块。模块唯一可以包含的是绑定(bind)到 Python 对象(类、函数等)的名称

导入包时,只需执行__init__.py 文件即可。导入模块时,只需执行模块文件本身。当您使用 from package import moduleimport package.module 从包中导入模块时,您从包和模块文件本身。

要从模块中只导入一个类,必须使用 from X import Y 语句,其中 X 是 [package1.[subpackage2.]]modulenameY 是绑定(bind)到您要导入到名称的对象的名称。请注意,即使您执行了这种导入,__init__.py 和整个模块脚本仍将被执行。唯一的区别是添加到您的 namespace 的内容,即 Y 指向的对象。

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

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

from collections import OrderedDict, Counter

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

从 itertools 导入 *

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

关于python - 在 Python 中,如何从包含多个类的文件中导入一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29453343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com