仅从文件导入特定功能

时间:2017-03-22 20:59:16

标签: python python-import python-module

我有一个文件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()

1 个答案:

答案 0 :(得分:1)

首先,您的.filter(key => !excludes.has(key)) 是一个实例方法,您可以使用整个useful_func类导入它,如下所示:

Bob

然后你可以创建from foo import Bob 的对象并使用你的函数:

Bob

但这并不能解决您的问题。我读到的问题是导入b = Bob() b.useful_func('something useful i believe') 模块时导入UnavailableModule

好吧,它会被运行,因为这就是导入工作的方式,你可以使用这样的结构阻止这种导入:

foo

这会阻止从其他模块导入class Bob: def useful_func(self, arg): pass if __name__ == '__main__': import UnavailableModule 模块时导入UnavailableModule。但是我不确定这是不是很好的做法。它虽然有效。