從來沒有想過我會需要這樣做,但在這裏我打算在python 2.7中使用枚舉。python2.7中最小的非官方枚舉支持 - flufl.enum或enum34?
有Barry's flufl.enum,其中PEP 435表示「......是PEP最初基於的參考實現」。
但是在pypi上也有一個backport enum34。
這些看起來都是半官方的,那麼我應該在新代碼中使用哪一個?
「應該有一個明顯的方法來做到這一點」,但這對於谷歌來說是一個艱難的話題,因爲有幾十(幾百?)個手動實現。而python 3.4枚舉仍然只是一個候選版本。
我已經試過了flufl.enum.Enum
和enum34.Enum
,並且行爲是完全不同的 - 最明顯的是__getitem__
的不同語義。根據Martijn Pieters的這個comment,backport是/具有挑戰性的,因爲實現依賴於元類上的新的__prepare__
函數。我已閱讀this帖子和PEP整體。
另請參閱:http://packages.python.org/flufl.enum/docs/using.html#differences-from-pep-354 –