一些情况下大家必须让类动态性的加上特性或方式,例如我们在做软件时就可以选用这类方式。用一个环境变量特定必须载入的控制模块,能够依据业务流程拓展随意添加必须的控制模块。
文中从此概述了Python完成动态性加上类的特性或友元函数的解决方案,具体做法以下:
最先我们可以参照ulipad的完成:mixin。
这儿做的非常简单,仅仅申明一个类,类复位的情况下载入环境变量,依据配备目录载入特殊文件目录下的控制模块下的涵数,涵数和控制模块同名的,将此涵数动态性载入为类的友元函数。
编码以下所显示: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涵数。文章内容来源于:www.seo-7.com
(责任编辑:网络)