有时候不想一开始就把模块加载进来,当调用这个模块的函数时,再加载,这样有什么方法吗?
可以按下面的例子来实现:
# File: builtin-import-example-3.py
class LazyImport:
def __init__(self, module_name):
self.module_name = module_name
self.module = None
def __getattr__(self, name):
if self.module is None:
self.module = __import__(self.module_name)
return getattr(self.module, name)
string = LazyImport("string")
print(string.ascii_letters)
运行结果输出如下:
=== RESTART: D:/work/csdn/python_Game1/example/builtin-import-example-3.py ===
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
>>>
在这个例子里,只当调用函数LazyImport()才会加载相应的模块。