python中的枚举类型

1、看一个定义

我们在写代码中经常会遇到这样的问题,定义姓名,0代表男,1代表女

那我们判断男女的代码会写成什么呢:

def print_sex(sex_type: int):
    if sex_type == 1:
        print("this is a woman")
    elif sex_type == 0:
        print("this is a man")
    else:
        print("you are a gay")


if __name__ == "__main__":
    print_sex(0)
    print_sex(1)
    print_sex(9)

看一眼代码没什么问题,逻辑上能实现,假如说我的代码写了一个月,一个月以后再看代码

sex_type == 1   我X,1代表啥,怎么就等于1就是女的了

sex_type == 0    0又是什么鬼

后来明思苦想,可算想出来了,0,1是不是太露骨了

二、枚举类型来了

枚举类型可以认为是一堆常量的集合,那我们的代码可以这么写

先定义一个枚举类

from enum import Enum

class Sex(Enum):
    MAN = 0
    WOMAN = 1

再来使用

from enum_demo.demo1 import Sex


def print_sex(sex_type:int):
    if sex_type == Sex.WOMAN.value: #Sex.WOMAN返回一个对像,里面有name和value
        print("this is a woman")
    elif sex_type == Sex.MAN.value:
        print("this is a man")
    else:
        print("you are a gay")


if __name__ == "__main__":
     print_sex(0)
     print_sex(1)
     print_sex(9)

输出:
this is a man
this is a woman
you are a gay

Sex.WOMAN 这个词儿一看就懂了吧,但是强迫症又来了,Sex.WOMAN .value这个就难看了,能不能把.value去掉呢,这样就更直观了

改一下枚举定义

from enum import Enum

//在定义枚举类型时,如果同时继承一些基础类型,比如int str
//枚举类型 就能同时充当基础类型使用

class Sex(int,Enum):
    MAN = 0
    WOMAN = 1

再次调用

from enum_demo.demo1 import Sex


def print_sex(sex_type:int):
    if sex_type == Sex.WOMAN:
        print("this is a woman")
    elif sex_type == Sex.MAN:
        print("this is a man")
    else:
        print("you are a gay")


if __name__ == "__main__":
     print_sex(0)
     print_sex(1)
     print_sex(9)


this is a man
this is a woman
you are a gay

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值