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

為了賬號安全,請及時綁定郵箱和手機立即綁定

for k, v in kw.iteritems(): setattr(self, k, v)求解這兩行代碼

for?k,?v?in?kw.iteritems():
????????????setattr(self,?k,?v)
為什么有k,v兩個參數
為什么使用kw.iteritems()有什么作用
第二行代碼是設置新的屬性,還是前面的問題,為什么不是一個一個的


正在回答

4 回答

**kw,本質是個dict對象,for in 通過dict的iteritems迭代器循環中會讀取出key 和 value ,key是dict的key,value則是對應值。

這樣獲取的屬性設置只能通過setattr,因為你要設置的是屬性的名稱,而直接self.k的方式設置的屬性為k,而且不是k的內容。

1 回復 有任何疑惑可以回復我~

因為**kw是關鍵字參數,是用于字典的,因此就有鍵值對一說。

for?k,?v?in?kw.iteritems():
這句代碼的意思是遍歷迭代字典里面的內容然后設置事例的屬性?經過setattr參數的設置后,實例中就匹配上了關鍵字參數中的鍵值對,也就是代碼中的course和python
0 回復 有任何疑惑可以回復我~
**kw這里其實關注的是**這兩個代表著關鍵字參數,kw是可以我們自己命名的,一個*表示的是可變參數,可變參數允許你傳入0個或任意個參數,這些可變參數在函數調用時自動組裝為一個tuple,而關鍵字參數允許你傳入0個或任意個含參數名的參數,這些關鍵字參數在函數內部自動組裝為一個dict
for?k,?v?in?kw.iteritems():??這里的作用是循環,賦值,因為KW是兩個**的,所以在P那一列賦值的時候必須使用age=18,這樣的格式age就相當于name,18就相當于'Male',然后系統會檢查這個賦值后,后面還有沒有,有的話繼續賦值,但是都必須符合那個規格來。
????????????setattr(self,?k,?v)?這里的作用是在實列__init__中添加一個age,在給它賦值18.


1 回復 有任何疑惑可以回復我~
iteritems()是python?2?中字典對象的方法?動態遍歷并返回字典中的鍵值對,items()是python?2/3中都有的方法,
直接返回一個包含元組的array?形如[(k1,v1),(k2,v2)...]
0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
python進階
  • 參與學習       255563    人
  • 解答問題       3038    個

學習函數式、模塊和面向對象編程,掌握Python高級程序設計

進入課程

for k, v in kw.iteritems(): setattr(self, k, v)求解這兩行代碼

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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