我正在尝试导入一个模块,但只有在调用特定类的对象时才会导入.例如:
class One(object):
try:
import OneHelper
except ImportError:
pass
def __init__(self):
# this function doesn't use OneHelper
...
def blah(self):
# this function does
OneHelper.blah()
Run Code Online (Sandbox Code Playgroud)
这导致NameError: global name 'OneHelper' is not defined当One.blah()函数被调用.到目前为止,我发现唯一有效的方法是将模块导入到使用它的实际函数中.所以:
class One(object):
def __init__(self):
# this function doesn't use OneHelper
...
def blah(self):
try:
import OneHelper
except ImportError:
pass
# this function does
OneHelper.blah()
Run Code Online (Sandbox Code Playgroud)
但我不想在我想要使用它的每个函数中导入模块,我希望它可用于整个类,但只有在实例化该类的实例时.抱歉,如果我不够清楚......
将import OneHelper在类精品工程,使其成为一个类属性.您可以dir(One)在定义课程后验证这一点- 这是您的OneHelper属性. One.OneHelper是对模块的引用.当然,在一个实例中,您可以self.OneHelper从方法中访问它.(您也可以继续访问它One.OneHelper.)