魔术方法的使用
案例体验
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
# __str__魔术方法, 如果不去写这个方法,那么print输出的则是信息存储的内存地址。
def __str__(self):
return f'Student类对象,name:{self.name}, age:{self.age}'
# __lt__魔术方法, 可以给类对象添加比较大小的功能(只能用到> or <)。
def __lt__(self, other):
return self.age < other.age
# __le__魔术方法,支持(>= or <=)的比较方法。
def __le__(self, other):
return self.age <= other.age
# __eq__魔术方法,完成相等的比较。
def __eg__(self, other):
return self.age == other.age
stu = Student('周杰轮', 31)
stu1 = Student('李连杰', 21)
print(stu)
print(str(stu))
print(stu1 > stu)
print(stu >= stu1)
面相对象编程
私有成员和方法的定义使用
私有成员的实际意义:在类中提供仅供内部使用的属性和方法 ,而不对外开放(类对象无法使用)
定义的语法:在定义变量和函数的基础上,在函数名或变量名前添加2个下划线“__”
案例体验
"""
演示面相对象封装思想中私有成员的使用
"""
# 定义一个类, 内部含有私有成员变量和私有成员方法
# 私有成员的实际意义:在类中提供仅供内部使用的属性和方法,而不对外开放(类对象无法使用)
class Phone:
__current_voltage = 1 # 当前手机运行电压,私有成员变量和方法可以被类中其他成员调用。
def __keep_single_core__(self):
print("让CPU以单核模式运行")
def call_by_5G(self):
if self.__current_voltage >= 1:
print("5G通话已经开启")
else:
self.__keep_single_core__()
print("电量不足,无法使用5G通话,并已经设置为单核运行进行省电。")
phone = Phone()
phone.call_by_5G()
继承
单继承
概念:一个子类继承了一个父类
案例体验
"""
演示类中继承的方法使用
"""
# 单继承
class Phone:
IMEI = None # 序列号
producer = "HM" # 厂商
def call_by_4G(self):
print("4G通话")
class Phone2024(Phone):
face_id = "131153" # 面部识别ID
def call_by_5G(self):
print("2024新增加的功能,5g通话")
phone = Phone2024()
print(phone.producer)
phone.call_by_4G()
phone.call_by_5G()
多继承
概念:一个子类继承多个父类
多继承中,如果父类有相同名方法或属性,先继承优先级高于后继承
pass 关键字的作用是什么?
pass 是站位语句,用来保证函数(方法)或类定义的完整性,表示无内容,空的意思
复写
案例体验
class Phone:
IMEI = None # 序列号
producer = "HMMMM" # 厂商
def call_by_4G(self):
print("4G通话")
# 定义子类,复写父类成员
class MyPhone(Phone):
producer = "ITHEIMA"
def call_by_5G(self):
print("开启GPU单核模式,确保通话时候省电")
# 方式1,父类名成员变量.
print(f"父类的厂商是:{Phone.producer}")
Phone.call_by_4G(self)
# 方法2,super().成员变量
print(f"父类的厂商是:{super().producer}")
super().call_by_4G()
print("关闭GPU单核模式,确保性能")
phone = MyPhone()
phone.call_by_5G()
print(phone.producer)
类型注解
多态
1)什么是多态?
多态是指,同一行为,使用不同的对象获得不同的状态。
如,定义函数(方法),通过类型注解声明需要父类对象,实际传人子类对象进行工作,从而获得不同的工作状态
2)什么是抽象类(接口)
包含抽象方法的类,称之为抽象类。抽象方法指的是:没有具体实现的方法(pass)
称之为抽象方法
3)抽象类的作用
多用于顶层设计(设计标准),以便子类做具体实现。
也是对子类的一种软约束,要求子类必须复写(实现)父类的一些方法
并配合多态使用,获得不同的工作状态。