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

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

將字典分配給類對象

將字典分配給類對象

滄海一幻覺 2023-07-18 15:05:06
下面兩個類定義有什么區別,class my_dict1(dict):    def __init__(self, data):        self = data.copy()        self.N = sum(self.values)上面的代碼會生成AttributeError: 'dict' object has no attribute 'N',而下面的代碼會編譯class my_dict2(dict):    def __init__(self, data):        for k, v in data.items():             self[k] = v        self.N = sum(self.values)例如,d = {'a': 3, 'b': 5}a = my_dict1(d) # results in attribute errorb = my_dict2(d) # works fine
查看完整描述

1 回答

?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

通過將self自身分配給任何東西,您可以將其分配self給與最初處理的完全不同的實例,使其不再是“自我”。該實例將屬于更廣泛的類型dict(因為data是 a?dict),而不是更窄的類型my_dict1。您需要self["N"]在第一個示例中執行此操作才能正確解釋它,但請注意,即使這樣,也可以如下所示:

abc?=?mydict_1({})

abc仍然沒有鍵“N”,因為完全不同的實例被__init__賦予了鍵“N”的值。這向您表明,不存在將self其自身分配給其他事物的合理場景。

關于my_dict2,如果您想使用特定的內容dict作為您的域的表示,則更喜歡組合而不是繼承。這意味著有data一個實例字段。

查看完整回答
反對 回復 2023-07-18
  • 1 回答
  • 0 關注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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