Python中动态添加类的属性或成员函数
来源:互联网 发布:7723java 编辑:程序博客网 时间:2024/06/06 02:42
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)
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函数。
- Python中动态添加类的属性或成员函数
- Python实现动态添加类的属性或成员函数的解决方法
- Python中动态添加类的成员
- Python中动态添加类的成员
- 类中添加成员函数
- iOS中动态添加属性的方法——关联(e.g. 向Category添加成员变量)
- Runtime 创建动态一个类 添加成员变量 属性
- Python中类的成员函数都是虚函数
- python中如何对类的成员函数开启线程
- python中向类中动态添加新特性及删除属性方法
- iOS Category中添加属性和成员变量的区别
- C++进阶 -类中成员和成员函数的动态调用
- python实现在类中动态添加属性和生成对象
- Object Initializer 使用名字初始化类的成员或属性
- Flex中如何使用addChild()和removeChild()函数动态添加或删除Accordion容器中项目的例子
- 【C++面向对象】C++中成员函数的const属性
- 类中成员的访问属性
- python 类成员函数
- CString,string,char*的综合比较及相互转换
- 将软件推向未来多核架构
- java:struts学习(4)-理解Struts在web.xml中的基本配置
- 网站登录记忆跳转实现的一种方法
- 路由协议 RFC3561
- Python中动态添加类的属性或成员函数
- Silverlight 2.0 Beta1 控件一览!
- 网络英文文献检索技巧
- 通过cscope看hotspot代码
- asp.net最简单的邮件自动发送
- c#2.0类和对象学习系列之输出参数
- 对遗留系统组织重构项目
- inster数组
- CGI教学:CGI常用环境变量