• 技术文章 >Python技术 >Python基础教程

    Python3枚举类如何处理重复名称?

    小妮浅浅小妮浅浅2020-11-16 18:31:58原创2098
    筛选重复的名称,相信对于各位小伙伴不是什么难事。那么,大家发现有重复的名称会如何进行解决呢?作为一位python的粉丝,小编优先选择的事这类的方法。在处理重复名称方面,小编选择的是用python3里的枚举法进行操作。没听过的小伙伴也可以尝试下这种新方法,也许比以前的方法有好用的地方。


    当存在枚举成员的名称有重复时,则后面的枚举成员相当于第一个枚举成员的别名,而且在实际使用中,就是使用的第一次出现的枚举成员。

    class Shape(Enum):
        SQUARE = 2
        DIAMOND = 1
        CIRCLE = 3
    ALIAS_FOR_SQUARE = 2

    如下所示,ALIAS_FOR_SQUARE就是SQUARE的别名,就比如“星期日”和“星期天”都可以表示星期七一样,当遇到这种情况我们也可以这样用。

    如果尝试遍历枚举类型,则后面重复的不会被打印出来。但是,如果想要获取别名,我们可以使用属性“__members__”,它是一个OrderedDict,包括所有定义的枚举名称,包括别名。

    for name, member in Shape.__members__.items():
    print( name, member )

    枚举类型默认可以对相同的值使用别名,但有时我们需要确保枚举类型不能重复,我们也有办法使每个枚举值只出现一次。我们可以引入装饰器“@unique”,它会遍历枚举成员,如果发现有重复就会立即抛出“ValueError”。

    from enum import Enum, unique
    @unique
    class Mistake(Enum):
        ONE = 1
        TWO = 2
        THREE = 3
        FOUR = 3
     
    Traceback (most recent call last):
    ValueError: duplicate values found in <enum 'Mistake'>: FOUR -> THREE


    本篇Python3枚举类处理重复名称的方法到这里就结束了,操作代码都在上方,小伙伴们可以直接使用。

    专题推荐:python3枚举类
    上一篇:python3类方法和静态方法如何选择?哪个好? 下一篇:Python3枚举类比较有什么限制?

    相关文章推荐

    • python3类中的Cat变量使用有限制吗?• python3类中的super如何调用?• python3类比函数好用吗?该如何选择?• python3类方法和静态方法如何选择?哪个好?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网