国产探花免费观看_亚洲丰满少妇自慰呻吟_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函數。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 辽宁省| 彭山县| 郸城县| 彩票| 宽甸| 黎川县| 鄂托克旗| 通州区| 株洲市| 通辽市| 仁化县| 庆安县| 中牟县| 贡山| 杭州市| 浦江县| 衡南县| 南昌县| 长汀县| 册亨县| 安龙县| 长海县| 宣恩县| 老河口市| 洮南市| 怀化市| 股票| 海城市| 秦皇岛市| 亳州市| 连城县| 桦南县| 射阳县| 肥城市| 阳谷县| 敦煌市| 宿州市| 社旗县| 伊宁县| 灵石县| 鹿泉市|