
初识对象设计类设计一个登记表classStudent:nameNone#记录学生姓名genderNone#记录学生性别nationalityNone#记录学生国籍native_placeNone#记录学生籍贯ageNone#记录学生年龄2.创建对象打印一个登记表stu_1Student()# stu_1Student()即使对象也是变量3.对象属性进行赋值填写表单stu_1.name林新stu_1.gender男stu_1.nationality中国stu_1.native_place江苏省stu_1.age184.获取对象中记录的信息print(stu_1.name)print(stu_1.gender)print(stu_1.nationality)print(stu_1.native_place)print(stu_1.age)类中成员方法的定义和使用class 类名称class是关键字表示要定义类类的属性记录数据定义在类中的变量成员变量类的行为定义函数用来记录方法定义在类中的函数成员方法函数写在类外面的写在类内部的函数叫方法创建类对象的语法对象类名称()成员方法的定义语法和定义函数基本一致多了个self关键字self表示类对象自身在传参的时候可以当作不存在当我们使用类对象调用方法self会自动被python传入。在方法内部想要访问类的成员变量必须使用self self.namedef 方法名(self,形参1,.......,形参n) 方法体 class 类名称 成员变量 def 成员方法(self,参数列表) 成员方法体 对象类名称()总结定义一个带有成员方法的类classStudent:nameNone# 学生姓名defsay_hi(self):print(f大家好呀我是{self.name},欢迎大家多多关照)# 想要访问成员属性必须使用self这个关键字defsay_hi2(self,msg):print(f大家好呀我是{self.name},{msg})stuStudent()stu.name左航stu.say_hi()stu2Student()stu2.name邓佳stu2.say_hi2(你们好啊)面向对象的编程思路基于模板类去创建实体对象使用对象完成功能开发1.封装2.继承3.多态基于类创建对象的语法:为什么非要创建对象才能使用呢答类只是一种程序内的“设计图纸”需要基于图纸生产实体对象才能正常工作这种套路称之为面向对象编程面向对象编程设计类基于类创建对象由对象做具体的工作设计一个闹钟类classClock:idNone#序列化priceNone#价格defring(self):importwinsound winsound.Beep(500,500)# (频率,时间)# 构建两个闹钟对象让其工作clock1Clock()#基于类创建对象clock1.id003203# 使用对象的属性和行为clock1.price9.99print(f闹钟ID:{clock1.id},价格{clock1.price})clock1.ring()# 调用ring这个方法clock2Clock()clock2.id001122clock2.price19.88print(f闹钟ID:{clock2.id},价格{clock2.price})clock1.ring()# 调用ring这个方法类的构造方法用构造方法对成员变量进行赋值classStudent:# 这一段可以省略nameNoneageNonetelNonedef__init__(self,name,age,tel):# 会自动声明上面的变量既可以定义也可以赋值self.namename self.ageage self.teltelprint(student类创建了一个类对象)stuStudent(zhou,31,123456)# 这句话一执行上面那个def的构造方法就跑了起来# zhou给了name31给了age123456给了tel。外部传入的参数给了内部的成员变量内部的成员变量print(stu.name)print(stu.age)print(stu.tel)总结习题案例foriinrange(1,10):print(f当前录入第{i}位学生的信息总共需录入10位学生信息)nameinput(请输入学生的姓名)ageinput(请输入学生的年龄)addressinput(请输入学生的地址)ii1classStudent:def__init__(self,name,age,tel):self.namename self.ageage self.teltel stuStudent(f{name},{age},{address})print(f学生{i}信息录入完成信息为【学生姓名{name}年龄:{age},地址{address}】)常用的类内置方法python内置的各类魔术方法前后两个__str__classStudent:def__init__(self,name,age):self.namename self.ageage# __str__魔术方法打印类对象默认是它的地址用这个方法可以改变默认输出为你想要的def__str__(self):returnfStudent类对象name:{self.name},age:{self.age}# __lt__魔术方法在两个类对象之间进行比较小于或者大于返回True或Falsedef__lt__(self,other):returnself.ageother.age# self当前对象other被比较对象# __le__魔术方法小于等于或者大于等于def__le__(self,other):returnself.ageother.age# __eq__魔术方法相等比较不用该方法的话类对象中比较的是两个地址def__eq__(self,other):returnself.ageother.age stu1Student(zhou,35)stu2Student(lin,35)print(f根据后面的比较符输出结果stu1 stu2{stu1stu2}这是le的比较)print(stu1stu2)#Falseprint(stu1stu2)#True封装私有成员的设置私有成员变量变量名以__开头、私有成员行为变量名以__开头私有成员属性和成员方法无法被类对象直接使用但可以被类中其他的成员使用。私有成员的意义在类中提供仅供内部使用的属性和方法而不对外开放类对象无法使用私有的只可以让我们内部自己使用总结# 定义一个类内含私有成员变量和私有成员方法classPhone:__current_voltage0.5# 等于1的时候5G通话已开启5G通话已开启等于0.5的时候让CPU以单核形式运行电量不足,无法使用5G...def__keep_single_core(self):print(让CPU以单核形式运行)defcall_by_5g(self):#定义了call_by_5G的一个成员方法在这个公开的方法里面它可以调用我们不公开的私有成员变量和私有成员方法ifself.__current_voltage1:print(5G通话已开启)else:self.__keep_single_core()# 调用上面的私有成员print(电量不足,无法使用5G通话并已设置为单核运行进行省电)# 调用类对象phone来调用phone类中的其他成员的call_by_5g这个方法phonePhone()phone.call_by_5g()# phone.__keep_single_core() 这两个私有成员变量和私有成员方法无法被直接类对象phone使用# print(phone.__current_voltage)封装练习题classIphone:__is_5g__enableTruedef__check_5g(self):ifself.__is_5g__enable:print(5g开启)else:print(5g关闭使用4g网络)defcall_by_5g(self):self.__check_5g()print(正在通话中)iphoneIphone()iphone.call_by_5g()# 通过调用公有成员来调用私有成员属性和私有成员方法# 私有成员的意义通过它可以调用不直接对用户开放的属性和行为