Python面向对象封装操作案例详解
本文实例讲述了Python面向对象封装操作。分享给大家供大家参考,具体如下:
目标
封装
小明爱跑步
存放家具
01.封装
封装是面向对象编程的一大特点
面向对象编程的第一步——将属性和方法封装到一个抽象的类中
外界使用类创建对象,然后让对象调用方法
对象方法的细节都被封装在类的内部
02.小明爱跑步
需求
小明体重75.0公斤
小明每次跑步会减肥0.5公斤
小明每次吃东西体重增加1公斤
提示:在对象的方法内部,是可以直接访问对象的属性的!
代码实现:
classPerson: """人类""" def__init__(self,name,weight): self.name=name self.weight=weight def__str__(self): return"我的名字叫%s体重%.2f公斤"%(self.name,self.weight) defrun(self): """跑步""" print("%s爱跑步,跑步锻炼身体"%self.name) self.weight-=0.5 defeat(self): """吃东西""" print("%s是吃货,吃完这顿再减肥"%self.name) self.weight+=1 xiaoming=Person("小明",75) xiaoming.run() xiaoming.eat() xiaoming.eat() print(xiaoming)
2.1小明爱跑步扩展——小美也爱跑步
需求
小明和小美都爱跑步
小明体重75.0公斤
小美体重45.0公斤
每次跑步都会减少0.5公斤
每次吃东西都会增加1公斤
提示
在对象的方法内部,是可以直接访问对象的属性的
同一个类创建的多个对象之间,属性互不干扰!
03.摆放家具
需求
房子(House)有户型、总面积和家具名称列表
新房子没有任何的家具
家具(HouseItem)有名字和占地面积,其中
席梦思(bed)占地4平米
衣柜(chest)占地2平米
餐桌(table)占地1.5平米
将以上三件家具添加到房子中
打印房子时,要求输出:户型、总面积、剩余面积、家具名称列表
剩余面积
在创建房子对象时,定义一个剩余面积的属性,初始值和总面积相等
当调用add_item方法,向房间添加家具时,让剩余面积-=家具面积
思考:应该先开发哪一个类?
答案——家具类
家具简单
房子要使用到家具,被使用的类,通常应该先开发
3.1创建家具
classHouseItem: def__init__(self,name,area): """ :paramname:家具名称 :paramarea:占地面积 """ self.name=name self.area=area def__str__(self): return"[%s]占地面积%.2f"%(self.name,self.area) #1.创建家具 bed=HouseItem("席梦思",4) chest=HouseItem("衣柜",2) table=HouseItem("餐桌",1.5) print(bed) print(chest) print(table)
小结
创建了一个家具类,使用到init和str两个内置方法
使用家具类创建了三个家具对象,并且输出家具信息
3.2创建房间
classHouse: def__init__(self,house_type,area): """ :paramhouse_type:户型 :paramarea:总面积 """ self.house_type=house_type self.area=area #剩余面积默认和总面积一致 self.free_area=area #默认没有任何的家具 self.item_list=[] def__str__(self): #Python能够自动的将一对括号内部的代码连接在一起 return("户型:%s\n总面积:%.2f[剩余:%.2f]\n家具:%s" %(self.house_type,self.area, self.free_area,self.item_list)) defadd_item(self,item): print("要添加%s"%item) ... #2.创建房子对象 my_home=House("两室一厅",60) my_home.add_item(bed) my_home.add_item(chest) my_home.add_item(table) print(my_home)
小结
创建了一个房子类,使用到init和str两个内置方法
准备了一个add_item方法准备添加家具
使用房子类创建了一个房子对象
让房子对象调用了三次add_item方法,将三件家具以实参传递到add_item内部
3.3添加家具
需求
1>判断家具的面积是否超过剩余面积,如果超过,提示不能添加这件家具
2>将家具的名称追加到家具名称列表中
3>用房子的剩余面积-家具面积
defadd_item(self,item): print("要添加%s"%item) #1.判断家具面积是否大于剩余面积 ifitem.area>self.free_area: print("%s的面积太大,不能添加到房子中"%item.name) return #2.将家具的名称追加到名称列表中 self.item_list.append(item.name) #3.计算剩余面积 self.free_area-=item.area
3.4小结
主程序只负责创建房子对象和家具对象
让房子对象调用add_item方法将家具添加到房子中
面积计算、剩余面积、家具列表等处理都被封装到房子类的内部
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。