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