Discuss / Python / 到底Enum是个类还是Month是个类

到底Enum是个类还是Month是个类

Topic source

wsc晚熟超

#1 Created at ... [Delete] [Delete and Lock User]

是Enum是类,Month是Enum的实例吗? 还是Month是类,各个枚举值是Month的实例?

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]

有空的话自己试一下:

type(Enum)
type(Month)
isinstance(Month.Jan, Month)
isinstance(Month.Jan, Enum)

shixinhang

#3 Created at ... [Delete] [Delete and Lock User]

请问廖老师,Enum和Month都是class,但又不属于Month继承Enum的class吧?

L0standfound

#4 Created at ... [Delete] [Delete and Lock User]

type(Enum)

<class 'enum.EnumMeta'> type(Month)

<class 'enum.EnumMeta'> isinstance(Month.Jan, Month) True isinstance(Month.Jan, Enum) True isinstance(Enum, Month) False isinstance(Month, Enum) False

issubclass(Month,Enum) True

Enum和Month都是类

Month继承Enum

各个枚举值是Month的实例

同时也是Enum的

这个是正解!

久疤_796

#8 Created at ... [Delete] [Delete and Lock User]
Month = Enum('Month',('Jan','Feb','Mar','Apr',
                      'May','Jun','Jul','Aug',
                      'Sep','Oct','Nov','Dec'))

我还以为是强制转换呢。。。是不是强制转换呢???

廖雪峰

#9 Created at ... [Delete] [Delete and Lock User]

不是强制转换,python的类可以动态创建,这里是返回了新的class

for value in weekday.members.values(): print(value)

weekday.sun weekday.mon weekday.tue weekday.wed weekday.thu weekday.fri weekday.sat

为什么返回的 不是 赋值的数字呢


  • 1
  • 2

Reply