23.python的特殊类—枚举类,动态创建类(元类)

1)枚举类

顾名思义就是枚举,和C语言中的enum差不多。有两种生成方式:

(1)快速生成

无需设定值,默认值从1开始。示例代码如下:

# -*- coding: utf-8 -*-
#!/usr/bin/env python3
from enum import Enum
Week=Enum('Week',('Monday','Tuesday','Wedsday','Tursday'))
for name,member in Week.__members__.items():
    print(name,member,member.value)

输出结果如下:

Monday Week.Monday 1
Tuesday Week.Tuesday 2
Wedsday Week.Wedsday 3
Tursday Week.Tursday 4

可以看出是从“1”开始的。

(2)精确生成

生成指定的值。示例代码如下:

# -*- coding: utf-8 -*-
#!/usr/bin/env python3
from enum import Enum,unique
@unique
class Week(Enum):
    Monday=0
    Tuesday = 1
    Wedsday=2
    Thursday=3
    Friday=4

这里注意一点,修饰器@unique是为了防止重复变量。

(3)访问方式

如下:

print(Week.Friday)
print(Week['Wedsday'])
print(Week.Thursday.value)

for name,member in Week.__members__.items():
    print(name,'=>',member,member.value)

输出结果:

Week.Friday
Week.Wedsday
3
Monday => Week.Monday 0
Tuesday => Week.Tuesday 1
Wedsday => Week.Wedsday 2
Thursday => Week.Thursday 3
Friday => Week.Friday 4
2)动态创建类(元类)

这里先补一个小问题:

def func(name):
    print('Hello,%s.'%name)
func('Jack')
就是什么时候打印输出,需要%号——当name为形参时。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值