Python只将模块导入一个类

5 python import

我正在尝试导入一个模块,但只有在调用特定类的对象时才会导入.例如:

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 definedOne.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)

但我不想在我想要使用它的每个函数中导​​入模块,我希望它可用于整个类,但只有在实例化该类的实例时.抱歉,如果我不够清楚......

kin*_*all 7

import OneHelper在类精品工程,使其成为一个类属性.您可以dir(One)在定义课程后验证这一点- 这是您的OneHelper属性. One.OneHelper是对模块的引用.当然,在一个实例中,您可以self.OneHelper从方法中访问它.(您也可以继续访问它One.OneHelper.)