第8天 | 12天搞定Python,面向对象( 三 )

输出结果
Colors.red2. 整型枚举
枚举成员的值支持多种数据类型 , 如字符串、布尔或整型等 , 如要指定为整型 , 可继承IntEnum类 。 注意 , 就算指定为IntEnum,其成员的值照样可以为字符串等 , 但在获取成员的值时 , 会进行自动转换 , 如果转换失败 , 会报错 。 当然 , 既然指定为整型了 , 就不要故意指定为字符串等了 。
# ---引入枚举类---from enum import Enum, IntEnum# 字符串枚举class Gender(Enum):Male = "男"Female = "女"Unknown = "保密"print(Gender.Male.value)# 整型枚举class Number(IntEnum):One = 1Two = 2# 会自动转为整型Three = "3"print(Number.Three.value)输出结果
男33. 唯一值
如果要限制定义枚举时 , 不能定义相同值的成员 。 可以使用装饰器@unique进行限制 。 如若出现相同值 , 运行时会报错 。
# 引入枚举类和唯一装饰器from enum import Enum, unique@uniqueclass Weekday(Enum):Sun = 0Mon = 1Tue = 2Wed = 3Thu = 4Fri = 5Sat = 6print(Weekday.Sat.value)输出结果
64. 枚举取值
枚举可通过成员获取它的名称和值 , 可通过名称或值获取成员 。
# 引入枚举类和唯一装饰器from enum import Enum, unique@uniqueclass Months(Enum):Jan = 1Feb = 2Mar = 3Apr = 4May = 5Jun = 6Jul = 7Aug = 8Sep = 9Oct = 10Nov = 11Dec = 12# 通过成员获取名称和值print(Months.Jan.name, Months.Jan.value)# 通过名称和值获取成员print(Months["Feb"], Months(2))输出结果
Jan 1Months.Feb Months.Feb5. 枚举遍历
通过for循环遍历枚举成员时 , 如若出现成员的值相同时 , 只获取第一个成员 。 当然 , 如果要遍历所有成员的话 , 得用特殊的方式获取 , 就是通过__menbers__属性 。
# ---引入枚举类---from enum import Enumclass Colors(Enum):red = 1orange = 2yellow = 3green = 4red_alias = 1# 获取成员名称 , 值相等的,只获取第一个for color in Colors:print(color.name)# 获取所有成员名称for color in Colors.__members__:print(color)输出结果
redorangeyellowgreenredorangeyellowgreenred_alias6. 枚举比较
枚举成员不可以比较大小 , 但可以通过is、is not 和==、!=进行同性或等值比较 。
# ---引入枚举类---from enum import Enumclass Colors(Enum):red = 1orange = 2yellow = 3green = 4red_alias = 1# is 判断result = Colors.red is Colors.redprint(result)# is not判断result = Colors.red is not Colors.greenprint(result)# ==比较值是否相等result = Colors.red == Colors.red_aliasprint(result)# !=比较值是否不相等result = Colors.red != Colors.greenprint(result)输出结果
TrueTrueTrueTrue7. 类中枚举
枚举可以定义在类里 , 并可通过类名和枚举名进行调用 。
# ---引入枚举类---from enum import Enumclass Plane:def __init__(self, color):self.color = color# 类的成员class Colors(Enum):Red = 1Orange = 2Yellow = 3Green = 4Blue = 5plane = Plane(Plane.Colors.Blue.value)print(plane.color)输出结果
5好了 , 有关枚举类型的内容 , 老陈讲完了 , 如果觉得对你有所帮助 , 希望老铁能转发点赞 , 让更多的人看到这篇文章 。 你的转发和点赞 , 就是对老陈继续创作和分享最大的鼓励 。
一个当了10年技术总监的老家伙 , 分享多年的编程经验 。 想学编程的朋友 , 可关注今日头条:老陈说编程 。 我将分享Python , 前端(小程序)和App方面的编程知识 。 关注我 , 没错的 。
#Python##Python编程从入门到实践##程序员#