声明一个类,类初始化的时候读取配置文件,根据配置列表加载特定目录下的模块下的函数,函数和模块同名,将此函数动态加载为类的成员函数。
代码如下所示:
class WinBAS(Bas):
def __init__(self):
self.__baslist = {}
self.__Init_Modules()
pass
def __Init_Modules(self):
import modplugs
for m in modplugs.__moduleset__:
mh = __import__('modules.' + m)# + '.' + m)
ma = getattr(mh, m)# + '.' + m)
ma = getattr(ma, m)
setattr(self.__class__, m, ma)
modplugs.py是模块配置文件如下:
__moduleset__ = [
'BAS_GetUserList',
]
然后建立目录modules下面建立一个空的__init__.py文件,把目录变为一个包,在modules目录下建立真正的BAS_GetUserList实现:BAS_GetUserList文件中有个BAS_GetUserList函数如下:
def BAS_GetUserList(self, strs):
return [0, strs]
这样WinBAS类就可以动态加入了BAS_GetUserList函数。
function="luckywin."+case_name+"."+def_namefunction=eval(function)
function(player_id,test_url)
function是个字符串,function(player_id,test_url) 这样写肯定不是字符串,怎么能用eval呢,直接eval function返回函数名,然后调用函数
#可以用函数字典,看看是否满足你的要求def text_func(self):
print "this is text func"
def int_func(self):
print "this is int_func"
gen_func={'text':text_func, 'int':int_func}
def choose(a='text'):
return gen_func[a]