我正在開發一個腳本,它解析大量的ID並想構建一個可以容納所有這些ID的抽象。我也希望這個對象能夠被輕鬆修改以添加新的ID。Python類型使用變量進行調度,這有可能嗎?
這是我到目前爲止有:
class action: # abstraction for all IDs in an action
def __init__(self, dID=".", cID='.', dTp='.', dVs='.', mcID='.', aID='.', lID='.', pID='.', uID='.', uSe='.', udTp='.', componentID='.', eCx='.', eUr='.', eTp='.', rUrl='.', sec='.', oID='.', oVa='.', oCu='.', sID='.', saID='.', socNetworkUserID='.'):
self._dID = dID
self._cID = cID
self._dTp = dTp
self._dVs = dVs
self._mcID = mcID
self._aID = aID
self._lID = lID
self._pID = pID
self._uID = uID #Display and Insights
self._uSe = uSe
self._udTp = udTp
self._componentID = componentID
self._eCx = eCx #Display and Insights
self._eUr = eUr
self._eTp = eTp #Display and Insights
self._rUrl = rUrl
self._sec = sec
self._oID = oID #Display and Insights
self._oVa = oVa
self._oCu = oCu
self._sID = sID
self._saID = saID
self._socNetworkUserID = socNetworkUserID
self._empty_params = []
def insert_id_val(self, name, value): #Utility method
return
def insert_id_val_display(self, name, value):
item_map = {"dID" : _dID, "cID" : _cID, "dTp" : _dTp, "dVs" : _dVs,
"mcID" : _mcID, "aID" : _aID, "lID" : _lID, "pID" : _pID,
"uID" : _uID, "uSe" : _uSe, "udTp" : _udTp, "componentID" : _componentID,
"eCx" : _eCx,"eUr" : _eUr, "eTp" : _eTp, "rUrl" : _rUrl,
"sec" : _sec, "oID" : _oID, "oVa" : _oVa, "oCu" : _oCu,
"socNetworkUserID" : _socNetworkUserID, "_" : _empty_params}
self.item_map[name] = value
def insert_id_val_insights(self, name, value):
item_map = {"eTp" : self._eTp, "eCx" : self._eCx, "uID" : self._uID, "oID" : self._oID,
"sID" : self._sID, "saID" : self._saID}
item_map[name] = value
我想這樣做型調度用兩種不同的方式,在兩個不同的插入功能的兩種方式,但他們都錯誤。我看過一些例子,其中人們做的事情就像Type-Dispatching Example 但他們不顯示如何使用類型調度與設置,只有得到。
我的實現提供:
global name '_dID' is not defined at line 193 of program.py
如何與設置變量一個利用類型調度?它甚至有可能嗎?如果沒有,我怎麼可以快速地做出像上面那樣的抽象而不必輸入一堆if語句?
編輯:添加,我不能實例化所有的ID對象,因爲它們的值在實例化時是未知的。
你有沒有考慮過你的類是從'dict'類繼承的? –
你能否詳細說明一下? @MichaelPetch –