社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

Natim

Natim 最近创建的主题
Natim 最近回复了
13 年前
回复了 Natim 创建的主题 » python中的枚举[重复]

我更喜欢在Python中定义枚举,如下所示:

class Animal:
  class Dog: pass
  class Cat: pass

x = Animal.Dog

它比使用整数更能防止错误,因为你不必担心确保整数是唯一的(例如,如果你说Dog=1和Cat=1,你就完蛋了)。

它比使用字符串更能防止错误,因为你不必担心拼写错误(例如。 x==“catt”无声地失败,但x==动物。Catt是一个运行时异常)。


增编: 您甚至可以通过让Dog和Cat从具有正确元类的symbol类继承来增强此解决方案:

class SymbolClass(type):
    def __repr__(self): return self.__qualname__
    def __str__(self): return self.__name__

class Symbol(metaclass=SymbolClass): pass


class Animal:
    class Dog(Symbol): pass
    class Cat(Symbol): pass

然后,如果您使用这些值来索引字典,请求它的表示将使它们看起来很好:

>>> mydict = {Animal.Dog: 'Wan Wan', Animal.Cat: 'Nyaa'}
>>> mydict
{Animal.Dog: 'Wan Wan', Animal.Cat: 'Nyaa'}