我想用類型註釋我的代碼,但是當涉及到集合時我有點困惑。我讀了PEP 484中的一些點:python打字模塊中的Set,FrozenSet,MutableSet和AbstractSet之間有什麼區別?
注意:Dict,List,Set和FrozenSet主要用於註釋返回值。對於參數,更喜歡下面定義的抽象集合類型,例如映射,序列或抽象集。
和
設置,更名爲AbstractSet。此名稱更改是必需的,因爲在打字模塊中設置意味着帶有泛型的set()。
但這沒有幫助。
我的第一個問題是:Set,FrozenSet,MutableSet和AbstractSet的共同點和區別是什麼?
我的第二個問題是:爲什麼如果我嘗試
from collections import FrozenSet
我得到
ImportError: cannot import name 'FrozenSet'
?
我正在使用Python 3.4,我已經通過pip安裝了mypy-lang。
嗨,謝謝你的回覆。我現在有了更清晰的想法(我知道註釋類型和對象之間的區別,但不知道mypy的輸入與python3.5的輸入模塊)。但是,我查看了兩份文檔,找不到FrozenSet的引用,這在PEP 484中提到。我錯過了什麼嗎? – marcotama
看起來他們還沒有將'FrozenSet'添加到'typing'中。 'typing'中的許多類映射到'collections.abc',其中包含'MutableSet'和'AbstractSet',但不包含'FrozenSet'。所以在這一點上'FrozenSet'只是PEP中的一個想法,僅此而已。 – hpaulj
「打字」模塊有一個github存儲庫。探索一下,看看未來會增加什麼。 – hpaulj