python学习 枚举类

当我们需要定义常量时,一般的做法就是使用大写变量通过整数来定义,例如月份:

JAN = 1
FEB = 2
MAR = 3
APR = 4
MAY = 5...
这种做法简单,但类型仍是变量且是int类
更好的方法是为这样的枚举类型定义一个class类型,然后,每个常量都是class的一个唯一实例。Python提供了Enum类来实现这个功能:

>>> from enum import Enum

>>> Month = Enum('Month',('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))

>>> Month

<enum 'Month'>

>>> for i in Month:

...   print(i)

... 

Month.Jan

Month.Feb

Month.Mar

Month.Apr

Month.May

Month.Jun

Month.Jul

Month.Aug

Month.Sep

Month.Oct

Month.Nov

Month.Dec

成员有个value属性自动给每个成员赋值为int类型从1开始。

>>> Month.Jan.value
1
>>> Month.Dec.value
12

如果需要更精确地控制枚举类型,可以从Enum派生出自定义类:

练习

Studentgender属性改造为枚举类型,可以避免使用字符串:

# -*- coding: utf-8 -*-
from enum import Enum, unique
@unique
class Gender(Enum):
    Male = 0
    Female = 1

class Student(object):
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值