python类的成员函数_Python实现动态添加类的属性或成员函数的解决方法
某些时候我们需要让类动态的添加属性或方法,比如我们在做插件时就可以采用这种方法。用一个配置文件指定需要加载的模块,可以根据业务扩展任意加入需要的模块。
本文就此简述了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函数。
python类的成员函数_Python实现动态添加类的属性或成员函数的解决方法相关推荐
- python 类装饰器和继承_python装饰器、继承、元类、mixin,四种給类动态添加类属性和方法的方式(一)...
介绍装饰器.继承.元类.mixin,四种給类动态添加类属性和方法的方式 有时候需要給类添加额外的东西,有些东西很频繁,每个类都需要,如果不想反复的复制粘贴到每个类,可以动态添加. 1 #coding= ...
- python的抽象类详解_Python抽象类以及元类
抽象基类: 继承的约束与协议 __doc__ = """ 抽象基类: 继承的约束与协议 # 抽象基类 --- 有点java的味道,也有点golang的味道,继承,协议,接 ...
- 我的Python学习笔记(四):动态添加属性和方法
一.动态语言相关概念 1.1 动态语言 在运行时代码可以根据某些条件改变自身结构 可以在运行时引进新的函数.对象.甚至代码,可以删除已有的函数等其他结构上的变化 常见的动态语言:Object-C.C# ...
- react的class和style,动态添加类classnames库
一,前言 1.在react中,class和style使用jsx语法绑定,和原生方式有点不同 二,style绑定 1.在react中,style使用jsx语法绑定,接受一个对象,对象的key是属性,va ...
- Css伪类选择器之常见形式、动态伪类篇
伪类选择器 伪选择器包括伪类和伪对象选择器,伪选择器以冒号(:)作为前缀标识符.冒号前可以添加选择器,限定伪类应用的范围,冒号后为伪类和伪对象名,冒号前后没有空格,否则将错认为类选择器: 单纯式,E: ...
- Excel合并数据查找函数VLOOKUP()一直显示最后一行数据或者一直报错的解决方法
Excel合并数据查找函数VLOOKUP()一直显示最后一行数据或者一直报错的解决方法 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地 ...
- 超链接a标签的伪类选择器问题,Link标签与visited标签的失效问题(问题介绍与解决方法)。以下全部内容跟可通过鼠标左键选取后,复制到编辑器中直接运行。
超链接a标签的伪类选择器问题,Link标签与visited标签的失效问题(问题介绍与解决方法).以下全部内容跟可通过鼠标左键选取后,复制到编辑器中直接运行. 参考文章: (1)超链接a标签的伪类选择器 ...
- python爬取百度使用kw关键字爬取时出现,百度安全验证,解决方法
python爬取百度使用kw关键字爬取时出现,百度安全验证,解决方法 之前爬取百度用kw时的代码(没有任何问题) import requestsurl = 'http://www.baidu.com/ ...
- R语言patchwork包将多个ggplot2可视化结果组合起来、使用plot_annotation函数为组合图添加标题信息、使用theme函数自定义组合图中的字体类型(family)
R语言patchwork包将多个ggplot2可视化结果组合起来.使用plot_annotation函数为组合图添加标题信息.使用theme函数自定义组合图中的字体类型(family) 目录
最新文章
- Python进阶02 文本文件读写
- Apache POI和EasyExcel 第五集:Apache POI的Excel读取不同类型的数据
- The application server could not be contacted
- UOJ #164 [清华集训2015]V (线段树)
- Web前端开发笔记——第二章 HTML语言 第四节 超链接标签
- 1.2低级线程处理API
- 黑马程序员-OC-内存管理(非ARC模式下)
- AddThis AddFeed WordPress插件发布 [转]
- java面试题,各大企业常见的java笔试题及答案(精华)
- SketchUppro 2021 已支持M1芯片款mac安装 SketchUppro 2021 直装版M1安装教程 M1芯片处理器安装草图大师问题教程
- 一份毕业指南给需要的人
- ros_多消息同步回调(Synchronizer)
- html5 sketchpad,Sketchpad:基于html5在线图像绘画板
- bilibili视频下载 (python)
- 用支付宝和微信可以直接跳转拉起支付,API搭建比较方便第三方支付接口首选杉德比较靠谱,
- Bert预训练新法则!
- win10上cmd命令中文显示问号?
- JSP-----------简易购物车代码
- inetd和xinetd的区别 (ZT)
- [AV1] DC Intra Prediction
热门文章
- 修改github用户名
- 请编程实现:产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复(百度了一下,get一种高性能算法,非递归)...
- DIY Ruby CPU 分析——Part III
- mknod创建设备(加载新的设备驱动时候,通常会用到此命令)
- Jquery性能优化(转自蓝色理想)
- 48.动态分区匹配算法(连续分区)
- java 首字母小写_java实现将字符串中首字母转换成大写,其它全部转换成小写的方法示例...
- wiki多个文件一起导入_wiki.js 使用 postgres 支持中文全文检索
- Spring 事务传播行为的理解
- 034_jQuery Ajax的getJSON和getScript方法