所谓枚举类型是什么呢? 就是这个类型只有可能有几种取值,比如月就只有一月,二月...十二月,星期几就只有星期一...星期日。 和C++不同,python中并没有枚举类型,要实现枚举类型可以使用枚举类。 于是呢首先需要导入模块:
from from enum import Enum,unique
然后有两种方式来定义我们想要的枚举类型: 第一种:
Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))
说明: 在上面的代码中左边的Month和右边的函数第一个参数应该要保持一致,如果不一致就会出现下面的情况: 代码:
a=Enum('b',('one','two','three')) c=a.one print(c)
输出:
b.one
可以看到,定义时我们定义的c的值是a.one,但实际上c的值却是b.one。 这样子定义后其实枚举类型是有默认值的,从1开始递增加1。 第二种: 其实我觉得第一种方法就是类似于调用了Enum.__call__(),传入两个参数,一个是类型名,一个是成员名的tuple。然后返回一个类(或是实例?我也不懂)。 那我们可以继承Enum来完成第二种实现,唯一不同的就是可以自定义value。
Enum.__call__()
from enum import Enum, unique @unique class Weekday(Enum): Sun = 0 # Sun的value被设定为0 Mon = 1 Tue = 2 Wed = 3 Thu = 4 Fri = 5 Sat = 6
嗯还有,还有你只需要写一次Weekday就可以了。 作业的两种方法实现: 第一种:
from enum import Enum Gender=Enum('Gender',('Male','Female')) class Student(object): def __init__(self, name, gender): self.name = name self.gender = gender
第二种:
#枚举类 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
Sign in to make a reply
MRZ轲信御马上
所谓枚举类型是什么呢? 就是这个类型只有可能有几种取值,比如月就只有一月,二月...十二月,星期几就只有星期一...星期日。 和C++不同,python中并没有枚举类型,要实现枚举类型可以使用枚举类。 于是呢首先需要导入模块:
然后有两种方式来定义我们想要的枚举类型: 第一种:
说明: 在上面的代码中左边的Month和右边的函数第一个参数应该要保持一致,如果不一致就会出现下面的情况: 代码:
输出:
可以看到,定义时我们定义的c的值是a.one,但实际上c的值却是b.one。 这样子定义后其实枚举类型是有默认值的,从1开始递增加1。 第二种: 其实我觉得第一种方法就是类似于调用了
Enum.__call__()
,传入两个参数,一个是类型名,一个是成员名的tuple。然后返回一个类(或是实例?我也不懂)。 那我们可以继承Enum来完成第二种实现,唯一不同的就是可以自定义value。嗯还有,还有你只需要写一次Weekday就可以了。 作业的两种方法实现: 第一种:
第二种: