為什么類的方法fromkeys是dict類的方法而不是獨立的內置函式?
據我所知,它僅根據傳遞給方法的引數回傳一個新字典,并且不受呼叫它的類實體(字典)的影響。通常的實作只是dict直接使用類名,而不是首先指定類實體。
我嘗試了以下陳述句,但它們都一直忽略我提到的類實體。
>>> dict.fromkeys((1,2))
{1: None, 2: None}
>>> {1: "Hey"}.fromkeys((1,2))
{1: None, 2: None}
>>> {1: "Hey"}.fromkeys((2,))
{2: None}
Python 檔案也沒有提及引數的作用。它沒有提到類實體的任何使用,但也沒有宣告它的無目的性。
我相信原因可能與命名空間管理有關。用戶創建的函式fromkeys不會這樣影響內置的類方法,對吧?
我只是想確保我沒有錯過類實體可能具有的任何目的,以避免將來在我的代碼中出現錯誤
uj5u.com熱心網友回復:
的結果dict.from_keys僅依賴于dict自身和傳遞給函式的引數。它不使用存盤在現有實體中的任何資訊,因此沒有理由提供一個。
至于為什么它不是一個函式,dict.from_keys仍然可以為子類作業,dict而不必做任何不同的事情。
>>> from collections import OrderedDict
>>> type(OrderedDict.fromkeys([1,2,3]))
<class 'collections.OrderedDict'>
Counter.fromkeys不起作用,但那是因為Counter.fromkeys被特別覆寫以建議替代方案。
粗略地說,你可以認為是dict.fromkeys這樣實作的:
@classmethod
def fromkeys(cls, keys, value=None):
return cls((k, value) for k in keys)
像這樣的電話
{'a': 1}.fromkeys(['b'])
相當于
dict.fromkeys(dict, ['b']) # First argument is type({'a': 1}), not dict
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/451061.html
