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)

它只是给我一个错误。

4

1 回答 1

7
import file2

加载模块file2并将其绑定到file2当前命名空间中的名称。bfromfile2可用作file2.b, not b,因此它不被识别为方法。你可以用

from file2 import b

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

于 2013-07-31T18:31:56.333 回答