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

首頁 > 編程 > Python > 正文

Python實現(xiàn)動態(tài)添加類的屬性或成員函數(shù)的解決方法

2019-11-25 18:19:20
字體:
供稿:網(wǎng)友

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

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 德安县| 定安县| 浦江县| 台东县| 鄂托克旗| 长兴县| 九龙城区| 古浪县| 辽宁省| 柳河县| 连城县| 尤溪县| 平果县| 晋宁县| 崇义县| 乃东县| 仁寿县| 白城市| 大邑县| 绍兴县| 德州市| 漾濞| 柘荣县| 武汉市| 比如县| 宁波市| 鹤峰县| 贡觉县| 阿坝县| 慈利县| 广汉市| 通河县| 临江市| 栾城县| 右玉县| 奉新县| 芒康县| 江口县| 炉霍县| 柳江县| 长宁县|