在 python 类中导入模块

我目前正在编写一个类,需要 osstat和其他一些。

在我的类中导入这些模块的最佳方法是什么?

我在考虑其他人什么时候会使用它,我希望“依赖”模块已经存在 实例化类时导入。

现在我将它们导入到我的方法中,但也许有更好的解决方案。

101455 次浏览

这个 (搜索“导入”部分)官方文件声明,import通常应该放在源文件的顶部。除了特殊情况外,我会遵守这条规则。

如果您的模块总是导入另一个模块,那么总是将它放在 PEP 8和其他答案所指示的顶部。另外,正如@delnan 在评论中提到的,sysos等正在被使用,所以将它们全局导入也没有坏处。

但是,如果您确实只需要在某些运行时条件下使用模块,那么条件导入没有任何问题。

如果你只想在类是 定义的情况下导入它们,比如类是在条件块或其他类或方法中,你可以这样做:

condition = True


if condition:
class C(object):
os = __import__('os')
def __init__(self):
print self.os.listdir


C.os
c = C()

如果只希望导入 实例化类,那么可以在 __new____init__中导入。

import sys
from importlib import import_module


class Foo():


def __init__(self):


# Depends on the configuration of the application.
self.condition = True # "True" Or "False"


if self.condition:
self.importedModule = import_module('moduleName')


# ---
if 'moduleName' in sys.modules:
self.importedModule.callFunction(params)


#or


if self.condition:
self.importedModule.callFunction(params)
# ---