python的类(三)—枚举类,动态创建类(元类

1)枚举类

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

(1)快速生成

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

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

输出结果如下:

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

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

(2)精确生成

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

# -*- coding: utf-8 -*-#!/usr/bin/env python3from enum import Enum,unique@uniqueclass 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.FridayWeek.Wedsday3Monday => Week.Monday 0Tuesday => Week.Tuesday 1Wedsday => Week.Wedsday 2Thursday => Week.Thursday 3Friday => Week.Friday 42)动态创建类(元类)

这里先补一个小问题:

def func(name): print('Hello,%s.'%name)func('Jack')

就是什么时候打印输出需要%号,当name为形参时。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180402G1IZBJ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券