python类的成员函数_Python实现动态添加类的属性或成员函数的解决方法
某些時候我們需要讓類動態(tài)的添加屬性或方法,比如我們在做插件時就可以采用這種方法。用一個配置文件指定需要加載的模塊,可以根據(jù)業(yè)務(wù)擴(kuò)展任意加入需要的模塊。
本文就此簡述了Python實現(xiàn)動態(tài)添加類的屬性或成員函數(shù)的解決方法,具體方法如下:
首先我們可以參考ulipad的實現(xiàn):mixin。
這里做的比較簡單,只是聲明一個類,類初始化的時候讀取配置文件,根據(jù)配置列表加載特定目錄下的模塊下的函數(shù),函數(shù)和模塊同名,將此函數(shù)動態(tài)加載為類的成員函數(shù)。
代碼如下所示:
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文件,把目錄變?yōu)橐粋€包,在modules目錄下建立真正的BAS_GetUserList實現(xiàn):BAS_GetUserList文件中有個BAS_GetUserList函數(shù)如下:
def BAS_GetUserList(self, strs):
return [0, strs]
這樣WinBAS類就可以動態(tài)加入了BAS_GetUserList函數(shù)。
總結(jié)
以上是生活随笔為你收集整理的python类的成员函数_Python实现动态添加类的属性或成员函数的解决方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: easyui表格编辑事件_Unity手游
- 下一篇: python 删除第三方库_python