如何動態(tài)地向類添加屬性?目標(biāo)是創(chuàng)建一個類似于db結(jié)果集的模擬類。例如,如果數(shù)據(jù)庫查詢使用dict表達(dá)式返回,{'ab':100, 'cd':200},然后我想看到:>>> dummy.ab100一開始我想也許我可以這樣做:ks = ['ab', 'cd']vs = [12, 34]class C(dict):
def __init__(self, ks, vs):
for i, k in enumerate(ks):
self[k] = vs[i]
setattr(self, k, property(lambda x: vs[i], self.fn_readyonly))
def fn_readonly(self, v)
raise "It is ready only"if __name__ == "__main__":
c = C(ks, vs)
print c.ab但c.ab返回屬性對象。替換setattr與.成直線k = property(lambda x: vs[i])根本沒用。那么,在運行時創(chuàng)建實例屬性的正確方法是什么?P.S.我知道在怎么樣?__getattribute__使用的方法?
3 回答

qq_花開花謝_0
TA貢獻(xiàn)1835條經(jīng)驗 獲得超7個贊
目標(biāo)是創(chuàng)建一個類似于db結(jié)果集的模擬類。
class atdict(dict): __getattr__= dict.__getitem__ __setattr__= dict.__setitem__ __delattr__= dict.__delitem__
添加回答
舉報
0/150
提交
取消