关于如何在Python中实现枚举,有几个问题。大多数解决方案最终会被或多或少相当于是这样的:没有枚举的pythonic设计
class Animal:
DOG=1
CAT=2
别人有建议兴建枚举更复杂的方式,但ultimatly的倾向,当一切都说过和做过,看起来像这样的例子。
基于我在Java和C#中的经验,我可以想到这样一个习惯用法的各种用法。然而,它似乎并不是Pythonic。事实上,似乎每当有人问你为什么在Python中没有枚举时,你往往会发出一些呻吟声,关于如何没有理由尝试和用像Python这样的语言来强化编译时类型安全性,或者需要枚举的设计如何在Python中产生不好的气味。
我的问题不是如何在Python中实现枚举,而是一般人如何解决问题的方法,这些问题可以用Pythonic的方式枚举。换句话说,您如何解决一个问题,该问题有助于将数据类型与一组可能的值分离开来,而无需将Java/C#解决方案移植到Python。
我不明白为什么你给的例子是非pythonic。如果我正在实现一个状态机,我将利用函数作为对象并将我的状态定义为函数。 –
我不知道这个枚举是如何实现的,但是我只是觉得Python社区中的一些人认为需要枚举的解决方案首先是非Pythonic。你的建议是,使用第一类函数作为状态来实现状态机是一个很好的开始,但答案是! – jlund3