Python:如何导入另一个.py文件

5

我有一个类,并且我想通过以下方式导入一个 def 函数:

import <file>

但是当我尝试调用它时,它会提示找不到def。我还尝试了以下方法:
from <file> import <def>

但是它说全局名称'x'未定义。

那么我该怎么办呢?

编辑:

这里是我试图做的一个示例。在file1.py中,我有:

var = "hi"

class a:
  def __init__(self):
    self.b()

  import file2

a()

而在file2.py中,我有:

def b(self):
  print(var)

但是它只是给我一个错误。


你想要导入什么,它是内置的吗?如果不是,它是否在你的工作目录中? - Stephan
你不会导入一个 file,而是导入一个 module,或者是包含在 module 中的名称。使用 import modulename,而不是 import filename.py。你需要添加一个更具体的例子来更好地说明你的问题。 - Martijn Pieters
你能在你的帖子中放置实际的导入语句和实际的绝对文件路径吗? - user2357112
哦,我从未想过从另一个模块导入类的方法。一旦你修复了语法,它实际上是有效的。但我不确定这是否是一个好主意。 - user2357112
哎呀,语法有什么问题吗? - user2638731
您的实际错误信息是什么? - Winston Ewert
1个回答

7
import file2

加载模块file2并将其绑定到当前命名空间中的名称file2。来自file2b作为file2.b可用,而不是b,因此它不能被识别为一种方法。您可以通过以下方式解决:

from file2 import b

通过这种方式,会加载模块并将该模块中的 b 函数赋值给名称为 b 的变量。虽然我不建议这样做。建议在顶级导入 file2 并定义一个方法委托给 file2.b,或者定义一个混入超类,在不相关的类中经常需要使用相同的方法时可以从中继承。将函数导入以用作方法会导致混淆,并且如果您尝试使用的函数是使用 C 实现的,则会发生错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接