gpt4 book ai didi

python - 如何从源文件中导入 Python 代码?

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

我在问这个问题时犹豫不决,因为我见过类似的问题,但答案过于复杂。我真正想要回答的问题由于“含糊”和“不是真正的问题”而被关闭,所以我将尽可能具体。

我在名为“line.py”的文件中有一个名为“line”的对象。我想创建另一个继承自“line”的对象,称为“line_segment”,并将其放在同一目录中名为“line_segment.py”的文件中。

path_finding_lib/
line.py
line_segment.py
a_star.py

问题是我似乎无法找到一种方法来从“line_segment.py”内部使用“line.py”中的代码,而无需将字符串附加到系统 PATH 变量和类似的东西。

有没有办法从文件路径或类似的路径导入代码?如果不是,为什么不呢?

最佳答案

虽然您可以使用以下方法附加到特定文件的 python 路径:

import sys
sys.path.append('pathtoModule')

如果它们在同一个文件夹中(不是一个模块,因为您缺少 init.py),您可以通过以下操作简单地从行模块导入:

from line import Line
class LineSegment(line):

命名约定为模块提供下划线和小写字母,为类提供大写: http://www.python.org/dev/peps/pep-0008/

它是非标准的,如果您在项目中动态追加到 python 路径,可能会导致麻烦,因为它会导致对象比较错误。

如果你有一个对象声明如下:

path_finding_lib/
line.py
line_segment.py
a_star.py
somemodule/
afile.py

如果您的行模块使用路径 somemodule.afile.SomeObject 从文件导入并实例化对象

它与从文​​件中实例化对象不是同一个类:

afile.SomeObject.

如果 afile 返回 afile.SomeObject 的一个实例,并且该对象与 somemodule.afile.SomeObject 的一个实例进行比较是否相等,将发现它们不相等。即

somemodule.afile.SomeObject == afile.SomeObject
==> False

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

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