亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python 更改變量的引用

Python 更改變量的引用

慕斯709654 2022-11-24 14:53:19
我正在嘗試在運行時為一個類創建屬性,我目前正在使用這段代碼:class Obj:  passattrs = ["a", "b", "c"]for attr in attrs:  attr_print = lambda self: print(attr)  setattr(Obj, attr, property(attr_print))o = Obj()o.a但是無論我嘗試打印什么屬性,它總是打印最后一個 in attrs。感覺 python 在每個循環中都在更改我以前的 lambda。有沒有辦法防止這種情況發生?
查看完整描述

1 回答

?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

是的,只需使用另一個 lambda ...


for attr in attrs:

    createProp = lambda a: (lambda self: print(a))

    attr_print = createProp(attr)

    setattr(Obj, attr, property(attr_print))

這樣,我們a在每個循環中創建一個新變量(這a是函數的參數/局部變量createProp),attr_print然后每個 s 都引用自己的私有as。


查看完整回答
反對 回復 2022-11-24
  • 1 回答
  • 0 關注
  • 106 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號