我有一个类,我想通过执行以下操作导入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)
它只是给了我一个错误。
答案 0 :(得分:7)
import file2
加载模块file2
并将其绑定到当前名称空间中的名称file2
。来自b
的{{1}}可用file2
,而不是file2.b
,因此无法将其识别为方法。您可以使用
b
将加载模块并将该模块中的from file2 import b
函数分配给名称b
。不过我不推荐它。在顶级导入b
并定义委托给file2
的方法,或者定义一个可以继承的mixin超类,如果您经常需要在不相关的类中使用相同的方法。导入函数以将其用作方法会让人感到困惑,如果您尝试使用的函数是在C中实现的话,它会中断。