關於如何在Python中實現枚舉,有幾個問題。大多數解決方案最終會被或多或少相當於是這樣的:沒有枚舉的pythonic設計
class Animal:
DOG=1
CAT=2
別人有建議興建枚舉更復雜的方式,但ultimatly的傾向,當一切都說過和做過,看起來像這樣的例子。
基於我在Java和C#中的經驗,我可以想到這樣一個習慣用法的各種用法。然而,它似乎並不是Pythonic。事實上,似乎每當有人問你爲什麼在Python中沒有枚舉時,你往往會發出一些呻吟聲,關於如何沒有理由嘗試和用像Python這樣的語言來強化編譯時類型安全性,或者需要枚舉的設計如何在Python中產生不好的氣味。
我的問題不是如何在Python中實現枚舉,而是一般人如何解決問題的方法,這些問題可以用Pythonic的方式枚舉。換句話說,您如何解決一個問題,該問題有助於將數據類型與一組可能的值分離開來,而無需將Java/C#解決方案移植到Python。
我不明白爲什麼你給的例子是非pythonic。如果我正在實現一個狀態機,我將利用函數作爲對象並將我的狀態定義爲函數。 –
我不知道這個枚舉是如何實現的,但是我只是覺得Python社區中的一些人認爲需要枚舉的解決方案首先是非Pythonic。你的建議是,使用第一類函數作爲狀態來實現狀態機是一個很好的開始,但答案是! – jlund3