国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實現動態添加類的屬性或成員函數的解決方法

2020-02-23 05:34:04
字體:
來源:轉載
供稿:網友

某些時候我們需要讓類動態的添加屬性或方法,比如我們在做插件時就可以采用這種方法。用一個配置文件指定需要加載的模塊,可以根據業務擴展任意加入需要的模塊。

本文就此簡述了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函數。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安化县| 海晏县| 衡东县| 分宜县| 宣武区| 普定县| 郯城县| 平原县| 得荣县| 伊金霍洛旗| 娄烦县| 肥东县| 嵊泗县| 鹤山市| 谷城县| 开江县| 乐业县| 五峰| 曲水县| 尚义县| 四会市| 洛扎县| 通辽市| 灌阳县| 大埔区| 太和县| 昔阳县| 兴化市| 承德县| 莫力| 和静县| 甘肃省| 郴州市| 墨玉县| 天等县| 九龙县| 岳阳县| 蓬溪县| 平果县| 万安县| 清远市|