最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2014年07月16日 10:03:33   投稿:shichen2014  
這篇文章主要介紹了Python實(shí)現(xiàn)動(dòng)態(tài)添加類的屬性或成員函數(shù)的解決方法,在類似插件開(kāi)發(fā)的時(shí)候會(huì)比較有用,需要的朋友可以參考下

某些時(shí)候我們需要讓類動(dòng)態(tài)的添加屬性或方法,比如我們?cè)谧霾寮r(shí)就可以采用這種方法。用一個(gè)配置文件指定需要加載的模塊,可以根據(jù)業(yè)務(wù)擴(kuò)展任意加入需要的模塊。

本文就此簡(jiǎn)述了Python實(shí)現(xiàn)動(dòng)態(tài)添加類的屬性或成員函數(shù)的解決方法,具體方法如下:

首先我們可以參考ulipad的實(shí)現(xiàn):mixin。

這里做的比較簡(jiǎn)單,只是聲明一個(gè)類,類初始化的時(shí)候讀取配置文件,根據(jù)配置列表加載特定目錄下的模塊下的函數(shù),函數(shù)和模塊同名,將此函數(shù)動(dòng)態(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下面建立一個(gè)空的__init__.py文件,把目錄變?yōu)橐粋€(gè)包,在modules目錄下建立真正的BAS_GetUserList實(shí)現(xiàn):BAS_GetUserList文件中有個(gè)BAS_GetUserList函數(shù)如下:

def BAS_GetUserList(self, strs):
  return [0, strs]

這樣WinBAS類就可以動(dòng)態(tài)加入了BAS_GetUserList函數(shù)。

相關(guān)文章

最新評(píng)論

邵阳市| 绥阳县| 日喀则市| 太谷县| 通榆县| 密云县| 平顺县| 阿瓦提县| 怀仁县| 西青区| 内江市| 荆门市| 峨山| 常宁市| 巩留县| 漠河县| 邓州市| 澳门| 博白县| 静安区| 东阳市| 吉林省| 肃北| 岢岚县| 格尔木市| 四平市| 朝阳县| 潼关县| 汉阴县| 成都市| 永顺县| 民勤县| 安陆市| 左贡县| 平山县| 化隆| 阿拉尔市| 柳河县| 封开县| 揭阳市| 崇左市|