目标
- 封装 是面向对象编程的一大特点
- 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中
- 外界 使用 类 创建 对象,然后 让对象调用方法
-
02. 小明爱跑步
需求
小明 体重
75.0公斤- 小明每次 跑步 会减肥
0.5公斤 - 小明每次 吃东西 体重增加
1公斤

class Person:def __init__(self, name, weight):self.name = nameself.weight = weightdef __str__(self):return "%s 体重 %.2f 公斤" % (self.name, self.weight)def run(self):self.weight -= 0.5def eat(self):self.weight += 1xiaoming = Person("小明", 50)print(xiaoming)xiaoming.eat()print(xiaoming)xiaoming.eat()xiaoming.run()print(xiaoming)
提示:在 对象的方法内部,是可以 直接访问对象的属性 的!
03. 摆放家具
需求
- 房子(House)有户型、总面积和家具名称列表
- 新房子没有任何的家具
- 家具(HouseItem)有名字和占地面积,其中
- 席梦思(bed) 占地
4平米 - 衣柜(chest) 占地
2平米 - 餐桌(table) 占地
1.5平米
- 席梦思(bed) 占地
- 将以上三件 家具 添加 到 房子 中
- 打印房子时,要求输出:户型、总面积、剩余面积、家具名称列表

class HouseItem:def __init__(self, name, area):self.name = nameself.area = areadef __str__(self):return "家具名称:%s, 占地:%.2f平方米" % (self.name, self.area)
import HouseItemclass House:def __init__(self, house_type, area):self.house_type = house_typeself.area = areaself.free_area = areaself.item_list = []def __str__(self):return "户型:%s\n总面积:%.2f[剩余面积:%.2f]\n家具名称列表:%s" % (self.house_type,self.area,self.free_area,self.item_list)def add_item(self, item):"""添加家具(如果剩余空间够的话):param item: 被添加的家具:return: None"""print("即将添加家具 %s" % item)if self.free_area < item.area:print("剩余面积不足,无法添加")returnself.item_list.append(item.name)self.free_area -= item.areaprint("添加成功")# 1. 创建家具bed = HouseItem.HouseItem("席梦思", 4)chest = HouseItem.HouseItem("衣柜", 2)table = HouseItem.HouseItem("餐桌", 1.5)print(bed)print(chest)print(table)# 2. 创建房子对象my_home = House("两室一厅", 60)my_home.add_item(bed)my_home.add_item(chest)my_home.add_item(table)print(my_home)

