python的类中怎么实现动态化函数?

Python041

python的类中怎么实现动态化函数?,第1张

给你这样一个例子吧,这个例子里面有动态增加类的函数

声明一个类,类初始化的时候读取配置文件,根据配置列表加载特定目录下的模块下的函数,函数和模块同名,将此函数动态加载为类的成员函数。

代码如下所示:

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_name

function=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]