2012-05-11 :-(
_ 夜
2100 飯。キャベツとじゃがいものガレット 何か別のものが出来上がった。
_ [python][モジュール][動的][インスペクト][リフレクション][遅延][import][load][ロード]python モジュールを動的にロードする
( モジュールを動的にロードする. #Python - Qiita )
リフレクションとかなんとかどうのこうの。
lazyload.py
#!/usr/bin/python
# -*- coding:utf8 -*-
# モジュールを動的にロードする. #Python - Qiita
# http://qiita.com/items/837
def lazy_loader(name):
"""Loading function, class and module lazy."""
try:
mod = __import__(name)
except:
mod_list = name.split('.')
mod = __import__('.'.join(mod_list[:-1]))
components = name.split('.')
for comp in components[1:]:
mod = getattr(mod, comp)
return mod
mymod.py
#!/usr/bin/python
# -*- coding:utf8 -*-
foobar = 0xDEADBEAF
def hoge():
print "hoge"
class Moge(object):
def __init__(self):
print "moge"
lazyload0.py
#!/usr/bin/python
# -*- coding:utf8 -*-
import lazyload
def main():
mod = lazyload.lazy_loader('os.path')
print mod.abspath('./')
mod = lazyload.lazy_loader('mymod')
mod.hoge()
print "0x%X" % (mod.foobar)
moge = mod.Moge()
main()
% python lazyload0.py
/home/rin/work/lang/python <= mod.abspath('./')
hoge <= mod.hoge()
0xDEADBEAF <= mod.foobar
moge <= mod.Moge()
[ツッコミを入れる]



