仅从文件导入特定函数

Import specific function only from file

我有一个文件,foo.py

import UnavailableModule

class Bob:
    def useful_func(self, arg):
        # Do useful stuff (doesn't use UnavailableModule)

并且在同一目录下的另一个文件bar.py中,我需要useful_func()但不能这样做

from foo.Bob import useful_func

因为它导致

problem: [Error 126] The specified module could not be found
An exception has occurred, use %tb to see the full traceback.

有回溯

C:\...\bar.py in <module>()
----> 1 from foo.Bob import useful_func
C:\...\foo.py in <module>()
----> 1 import UnavailableModule

是否可以仅通过其他方式获得useful_func()

首先你的 useful_func 是一个实例方法,你可以用整个 Bob class 导入它,像这样:

from foo import Bob

然后您可以创建 Bob 的对象并像这样使用您的函数:

b = Bob()
b.useful_func('something useful i believe')

但这并不能解决你的问题。我读到的问题是,在导入 foo 模块时,UnavailableModule 的导入是 运行。

好吧,它将是 运行,因为这就是导入的工作方式,您可以使用以下结构来阻止此导入:

class Bob:
  def useful_func(self, arg):
      pass

if __name__ == '__main__':
  import UnavailableModule

这将防止在从另一个模块导入 foo 模块时导入您的 UnavailableModule。但是我不确定这是否是好的做法。虽然它有效。