初识对象
使用对象组织数据
class Student:
name=None
gender=None
nationality=None
native_place=None
age=None
stu_1=Student()
stu_1.name="林军杰"
stu_1.gender="男"
stu_1.nationality="中国"
stu_1.native_place="山东"
stu_1.age=31
print(stu_1.name)
print(stu_1.gender)
print(stu_1.nationality)
print(stu_1.native_place)
print(stu_1.age)
类的成员方法
类的定义和使用
类的方法
成员方法的定义语法
成员变量和成员方法
注意事项
类和对象
基于类创建对象
class Clock:
id=None
price=None
def ring(self):
import winsound
winsound.Beep(2000,3000)#2000是响铃频率,3000是响铃时间
clock1=Clock()
clock1.id="003032"
clock1.price=19.19
print(f"闹钟ID:{clock1.id},价格:{clock1.price}")
clock1.ring()
clock2=Clock()
clock2.id="003033"
clock2.price=21.99
print(f"闹钟ID:{clock2.id},价格:{clock2.price}")
clock2.ring()
构造方法
class Student:
name=None
age=None
tel=None
def __init__(self,name,age,tel):
self.name=name
self.age=age
self.tel=tel
print("Student类创建了一个类对象")
stu=Student("周杰轮",31,1850000666)
print(stu.name)
print(stu.age)
print(stu.tel)
注意方法
学生信息录入
class Student:
def __init__(self,name,age,address):
self.name=name
self.age=age
self.address=address
for i in range(1,11):
Name=input("输入学生姓名")
Age=input("输入学生年龄")
Address=input("输入学生住址")
stu =Student(Name,Age,Address)
print(f"学生{i}信息录入完成,信息为:{stu.name},{stu.age},{stu.address}")
魔术方法
__str__字符串
__le__小于等于比较符号方法
__eq__,比较运算符实现方法
class Student:
def __init__(self,name,age):
self.name=name
self.age=age
# __str__魔术方法 #当需要把类的对象变成字符串使用
def __str__(self):
return f"Student类对象,name:{self.name},age:{self.age}"
# __lt__魔术方法
def __lt__(self, other):
return self.age<other.age
#__le__魔术方法
def __le__(self, other):
return self.age <= other.age
#__eq__魔术方法
def __eq__(self, other):
return self.age == other.age
stu1=Student("周杰轮",31)
stu2=Student("林俊节",36)
print(stu1)
#输出的是内存地址
print(stu1<stu2)# __lt__魔术方法
print(stu1>stu2)
print(stu1 <= stu2) # 使用 __le__ 方法
print(stu1 >= stu2)
print(stu1 == stu2) # 使用 __eq__ 方法
魔术方法的总结
注:面相对象三大特性:封装,继承,多态
封装
私有成员
使用私有成员
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.__keep_single_core()
#print(Phone.__keep_single_core()) wrong
Phone.call_by_5g()
注:私有成员在类中提供仅供内部使用的属性和方法,而不对外开放(类对象无法使用)
封装的课后习题
class Phone:
__is_5g_enable=False
def __check_5g(self):
if self.__is_5g_enable:
print("5g开启")
else:
print("5g关闭,使用4g网络")
def call_by_5g(self):
self.__check_5g()
print("正在通话中")
phone=Phone()
phone.call_by_5g()
继承的基础语法
单继承
多继承
多继承注意事项
注:pass关键字,pass是占位语句,用来保证函数或类定义的完整性,表示无内容,空的意思
#演示单继承
class Phone:
IMEI=None #序号
producer="ITCast" #厂商
def call_by_4g(self):
print("4g通话")
class Phone_2022(Phone):
face_id="10001" #面部识别ID
def call_by_5g(self):
print("2024年新功能,5g通话")
phone=Phone_2022()
print(Phone.producer)
phone.call_by_4g()
phone.call_by_5g()
#演示多继承
class NFCReader:
nfc_type="第五代"
producer="HM"
def read_card(self):
print("NFC读卡")
def write_card(self):
print("NFC写卡")
class RemoteControl:
rc_type="红外遥控"
def control(self):
print("红外遥控开启了")
class MyPhone(Phone,NFCReader,RemoteControl):
pass
phone=MyPhone()
phone.call_by_4g()
phone.read_card()
phone.write_card()
phone.control()
print(phone.producer)
#演示多继承下,父类成员名一致的场景
复写父类成员和调用
复写
调用父类同名成员
#演示单继承
class Phone:
IMEI=None #序号
producer="ITCast" #厂商
def call_by_5g(self):
print("使用5g网络进行通话通话")
#演示多继承下,父类成员名一致的场景
class MyPhone(Phone):
producer="ITHEIMA"
def call_by_5g(self):
print("开启CPU单核模式,确保通话时省电")
#方式1
# print(f"父类的厂商是{Phone.producer}")
# Phone.call_by_5g(self)
#方式2
print(f"父类的厂商是:{super().producer}")
super().call_by_5g()
print("使用5g网络进行通话")
print("关闭CPU单核运行模式,确保性能")
phone=MyPhone()
phone.call_by_5g()
print(phone.producer)
若有侵权,请联系作者