在类instanciation上导入

CoM*_*tel 6 python python-2.7

我正在创建一个包含多个类的模块.我的问题是这些类中的一些需要导入需要手动编译或需要特定硬件才能工作的非常具体的模块.

没有兴趣预先导入每个特定模块,并且由于某些模块需要特定的硬件才能工作,它甚至可能引发错误.

我想知道是否有可能只在需要时导入这些模块,即实例化一个精确的类,如下所示:

class SpecificClassThatNeedRandomModule(object):
    import randomModule
Run Code Online (Sandbox Code Playgroud)

此外,我不确定这将是一个很好的pythonic方式来做这个技巧,所以我愿意建议一个正确的方法.

Vin*_*ent 4

可以在实例化时导入模块:

class SpecificClassThatNeedRandomModule(object):
    def __init__(self):
        import randomModule
        self.random = randomModule.Random()
Run Code Online (Sandbox Code Playgroud)

然而,这是一个不好的做法,因为它使得很难知道导入何时完成。您可能想要修改您的模块,以便它不会引发异常,或者捕获ImportError

try:
    import randomModule
except ImportError:
    randomModule = None
Run Code Online (Sandbox Code Playgroud)