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

输出结果
marry说: 我30岁了 , 我在教6年级请注意 , 请注意 , Python可支持多继承 , 语法是:class ClassName(基类1, 基类2, 基类3):
8.9 方法重写如果你的父类方法的功能不能满足你的需求 , 你可以在子类重写你父类的方法 。 可用super() 函数调用父类(超类)的方法 。
# 定义父类class Parent:def m(self):print('调用父类方法')class Child(Parent):# 定义子类def m(self):print('调用子类方法')c = Child()# 子类实例c.m()# 子类调用重写方法super(Child, c).m()输出结果
调用子类方法调用父类方法8.10 对象判断判断两个标识符是否引用同一个对象时,可以用is进行比较 , 还可以用相反的方式 , is not进行比较 。 is 跟 == 的区别是:is用于判断两个变量是否引用同一个对象 , ==是比较两个变量的值是否相等 。 可通过id()函数获得对象引用地址 。
# 定义父类class Parent:def m(self):print('调用父类方法')class Child(Parent):# 定义子类def m(self):print('调用子类方法')p = Parent()c = Child()# 子类实例print(c is p)# 数组a = (5, 6, 8)b = aprint(id(a), id(b))print(a is b)print(a, "==", b)print(a == b)输出结果
False140317976246976 140317976246976True(5, 6, 8) == (5, 6, 8)True好了 , 有关面向对象的内容 , 老陈讲完了 , 如果觉得对你有所帮助 , 希望老铁能转发点赞 , 让更多的人看到这篇文章 。 你的转发和点赞 , 就是对老陈继续创作和分享最大的鼓励 。
一个当了10年技术总监的老家伙 , 分享多年的编程经验 。 想学编程的朋友 , 可关注今日头条:老陈说编程 。 我将分享Python , 前端(小程序)和App方面的编程知识 。 关注我 , 没错的 。
8.11 枚举类型枚举语法跟类差不多 , 放在一起学习效果更好 。枚举(Enum)跟整型一样 , 是一种数据类型 。 它是一系列常量的集合 , 通常用于表示某些特定的有限集合 , 如月份、星期、状态、性别(男、女、不男不女)等 , 当一个变量有几种可能取值的时候 , 定义为枚举类型 。
1. 枚举定义
枚举是不可变类型 , 一旦定义创建 , 其成员的值不可改变 , 名称不可重复 , 通过class关键字和继承Enum类进行定义 。 定义时若出现成员的值相同 , 那只有第一个有效 , 其语法结构为:
class 枚举名(Enum):
成员名1 = 值1
成员名x = 值n
# ---引入枚举类---from enum import Enumclass Colors(Enum):red = 1orange = 2yellow = 3green = 4red_alias = 1print(Colors(1))输出结果
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)