Python_封装案例
文章目录
- 一、封装
- 二、封装案例一:小明爱跑步
- 三、封装案例二:摆放家具
一、封装
- 封装是面向对象编程的一大特点
- 面向对象编程的第一步 —— 将属性和方法封装到一个抽象的类中
- 外界使用类创建对象,然后让对象调用方法
- 对象方法的细节都被封装在类的内部
二、封装案例一:小明爱跑步
需求:
- 小明体重 75.0 公斤
- 小明每次跑步会减肥 0.5 公斤
- 小明每次吃东西体重增加 1 公斤
分析:
- 类名:
Person
- 属性:姓名
name
,体重weight
- 方法:
跑步run
吃东西eat
添加属性__init__
属性信息__str__
class Person:def __init__(self, name, weight):self.name = nameself.weight = weightdef __str__(self):return f'姓名:{self.name},体重:{self.weight}'def run(self):print(f'{self.name}跑步 5 千米,体重减少了')self.weight -= 0.5def eat(self):print(f'{self.name}大餐一顿,体重增加了')self.weight += 1XiaoMing = Person('XiaoMing', 75.0)
print(XiaoMing)XiaoMing.run()
print(XiaoMing)
XiaoMing.eat()
print(XiaoMing)
结果:
姓名:XiaoMing,体重:75.0
XiaoMing跑步 5 千米,体重减少了
姓名:XiaoMing,体重:74.5
XiaoMing大餐一顿,体重增加了
姓名:XiaoMing,体重:75.5
三、封装案例二:摆放家具
需求:
- 房子(House)有户型、总面积和家具名称列表
- 新房子没有任何的家具。
- 家具(HouseItem)有名字和占地面积,其中
- 席梦思(bed)占地 4 平米
- 衣柜(chest)占地 2 平米
- 餐桌(table)占地 1.5 平米
- 将以上三件家具添加到房子中
- 打印房子时,要求输出:户型、总面积、剩余面积、家具名称列表
剩余面积
- 在创建房子对象时,定义一个剩余面积的属性,初始值和总面积相等
- 当调用
add_item
方法,向房间添加家具时,让剩余面积=家具面积
- 类名:房子类
House
- 属性:
户型name
,总面积total_area
,
剩余面积free_area = total_are
,
家具名称列表item_list = []
- 方法:
__init__
,__str__
- 添加家具方法:
add_item()
类名:家具类
HouseItem
属性:名字name
,占地面积area
方法:__init__
,__str__
class HouseItem:'''家具类'''def __init__(self,name,area):self.name = nameself.area = areadef __str__(self):return f'家具:{self.name},占地面积:{self.area}平米'class House:'''房子类'''def __init__(self,name,total_area):self.name = nameself.total_area = total_areaself.free_area = total_areaself.item_list = []def add_item(self,item):'''添加家具方法''''''检查剩余面积是否足够放置家具'''if self.free_area >= item.area:self.item_list.append(item.name)self.free_area -= item.areaprint(f'已添加{item.name},当前剩余面积{self.free_area}平米')else:print(f'剩余面积不足,无法添加{item.name}')def __str__(self):return (f'房子信息\n'f'户型:{self.name}\n'f'总面积:{self.total_area}\n'f'剩余面积:{self.free_area}\n'f'家具列表:{self.item_list}')# 创建三件家具
bed = HouseItem('席梦思',4)
chest = HouseItem('衣柜',2)
table = HouseItem('餐桌',1.5)# 创建房子(假设是两居室,总面积10平米)
house = House('两居室',10)# 添加家具到房子中
house.add_item(bed)
house.add_item(chest)
house.add_item(table)# 打印房子信息
print('\n'+house.__str__())
结果:
已添加席梦思,当前剩余面积6平米
已添加衣柜,当前剩余面积4平米
已添加餐桌,当前剩余面积2.5平米房子信息
户型:两居室
总面积:10
剩余面积:2.5
家具列表:['席梦思', '衣柜', '餐桌']