【问题标题】:Python: importing another .py filePython:导入另一个 .py 文件
【发布时间】:2013-07-31 17:58:44
【问题描述】:

我有一个班级,我想通过以下方式导入一个 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)

这只是给我一个错误。

【问题讨论】:

  • 你要导入什么,它是内置的吗?如果不是,它是否与您的工作目录位于同一目录中?
  • 你没有导入file;你导入一个 module 或包含在一个模块中的名称。 import modulename,不是import filename.py。您需要添加一个更具体的示例来更好地说明您的问题。
  • 你能把实际的导入语句和实际的绝对文件路径放在你的帖子中吗?
  • ……嗯。我从没想过从另一个模块导入一个类的方法。一旦你修复了语法,它实际上就可以工作。不过,我不确定这是否是个好主意。
  • 嗯...语法有什么问题?

标签: python import function


【解决方案1】:
import file2

加载模块file2 并将其绑定到当前命名空间中的名称file2。来自file2b 可用作file2.b,而不是b,因此它不被识别为一种方法。你可以修复它

from file2 import b

这将加载模块并将该模块中的b 函数分配给名称b。不过,我不会推荐它。在顶层导入file2 并定义一个委托给file2.b 的方法,或者如果您经常需要在不相关的类中使用相同的方法,则可以定义一个可以继承的mixin 超类。导入函数以将其用作方法会令人困惑,如果您尝试使用的函数是用 C 实现的,则会中断。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 2014-05-22
    相关资源
    最近更新 更多