文章目录
综合应用
都看了对象了,不来看看怎么应用吗???
烤地瓜
需求
需求主线:
- 被烤的时间和对应的地瓜状态:
0-3分钟:生的
3-5分钟:半生不熟
5-8分钟:熟的
超过8分钟:烤糊了 - 添加的调料
用户可以按自己的意愿添加调料
步骤分析
需求涉及一个事物:地瓜
涉及一个类:地瓜类
- 地瓜的属性(
__init__:()
)
被烤的时间
地瓜的状态
添加的调料 - 地瓜的添加调料(def 方法():)
被烤:用户根据意愿设定每次烤地瓜的时间;判断地瓜被烤的总时间在哪个区间,修改地瓜状态
添加调料:用户更具意愿设定添加的调料;将用户添加的调料储存 - 显示对象的调料存储(
__str__:()
)
定义类
- 地瓜属性
- 定义地瓜的初始化属性,后期根据程序推进更新实例属性
class SweetPotato():
def __init__(self):
# 被烤的时间
self.cook_time = 0
# 地瓜的状态
self.cook_state = '生的'
# 调料列表
self.condiments = []
定义烤地瓜方法
class SweetPotato():
......
# 烤地瓜的方法
def cook(self,time):
# 先计算地瓜整体烤过的时间
self.cook_time += time
# 用整体考过的时间判断地瓜的状态
if 0 <= self.cook_time and 3 < self.cook_time:
self.cook_state = '生的'
elif 3 <= self.cook_time and 5 < self.cook_time:
self.cook_state = '半生不熟'
elif 5 <= self.cook_time and 8 < self.cook_time:
self.cook_state = '熟的'
else:
self.cook_state = '烤糊了'
书写str魔法方法,用于输出对象状态
class SweetPotato():
......
# 输出对象的状态
def __str__(self):
return '这个地瓜被烤过的时间是{},状态是{}'.format(self.cook_time,self.cook_state)
创建对象,测试实例属性和实例方法
# 2. 创建对象并调用实例的方法
digua1 = SweetPotato()
print(digua1) # 这个地瓜被烤过的时间是0,状态是生的
digua1.cook(2)
print(digua1) # 这个地瓜被烤过的时间是2,状态是生的
定义添加调料方法,并调用该实例方法
class SweetPotato():
......
def add_condiments(self,condiment):
# 用户意愿的调料追加到调料到调料列表中
self.condiments.append(condiment)
digua1 = SweetPotato()
print(digua1) # 这个地瓜被烤过的时间是0,状态是生的,烤地瓜的调料有[]
digua1.cook(6)
print(digua1) # 这个地瓜被烤过的时间是2,状态是熟的,烤地瓜的调料有[]
digua1.add_condiments('辣椒面,胡椒粉')
print(digua1) # 这个地瓜被烤过的时间是6,状态是生的,烤地瓜的调料有['辣椒面,胡椒粉']
digua1.add_condiments('酱油')
print(digua1) # 这个地瓜被烤过的时间是6,状态是生的,烤地瓜的调料有['辣椒面,胡椒粉', '酱油']
代码总汇
# 1. 定义类:初始化属性,被烤和添加调料的方法,显示对象信息的str
class SweetPotato():
def __init__(self):
# 被烤的时间
self.cook_time = 0
# 地瓜的状态
self.cook_state = '生的'
# 调料列表
self.condiments = []
# 烤地瓜的方法
def cook(self,time):
# 先计算地瓜整体烤过的时间
self.cook_time += time
# 用整体考过的时间判断地瓜的状态
if 0 <= self.cook_time or 3 > self.cook_time:
self.cook_state = '生的'
elif 3 <= self.cook_time and 5 > self.cook_time:
self.cook_state = '半生不熟'
elif 5 <= self.cook_time and 8 > self.cook_time:
self.cook_state = '熟的'
else:
self.cook_state = '烤糊了'
def add_condiments(self,condiment):
# 用户意愿的调料追加到调料到调料列表中
self.condiments.append(condiment)
# 输出对象的状态
def __str__(self):
return '这个地瓜被烤过的时间是{},状态是{},烤地瓜的调料有{}'.format(self.cook_time,self.cook_state,self.condiments)
# 2. 创建对象并调用实例的方法
digua1 = SweetPotato()
print(digua1) # 这个地瓜被烤过的时间是0,状态是生的,烤地瓜的调料有[]
digua1.cook(6)
print(digua1) # 这个地瓜被烤过的时间是2,状态是熟的,烤地瓜的调料有[]
digua1.add_condiments('辣椒面,胡椒粉')
print(digua1) # 这个地瓜被烤过的时间是6,状态是生的,烤地瓜的调料有['辣椒面,胡椒粉']
digua1.add_condiments('酱油')
print(digua1) # 这个地瓜被烤过的时间是6,状态是生的,烤地瓜的调料有['辣椒面,胡椒粉', '酱油']
搬家具
需求
将小于房子剩余面积的家具摆放到房子中
步骤分析
需求涉及两个事物:房子和家具,故被案例涉及两个类:房子类和家具类。
-
房子类
实例属性:房子地理位置,占地面积,剩余面积,房子内家具列表
实例方法:容纳家具
显示房屋信息 -
家具类
家具名称
家具占地面积
定义类
- 家具类
# 创建家具类
class Furniture():
def __init__(self,name,area):
# 家具名字
self.name = name
# 家具面积
self.area = area
# 创建
bad = Furniture('双人床',6)
safa = Furniture('沙发',10)
- 房子类
class Home():
def __init__(self,address,area):
# 地理位置
self.address = address
# 房屋面积
self.area = area
# 剩余面积
self.free_area = area
# 家具列表
self.furniture = []
def __str__(self) -> str:
return f'房子位于{self.address},占地面积为{self.area},剩余面积{self.free_area},拥有的家具有{self.furniture}'
# 创建房子类
jia1 = Home('重庆',1000)
print(jia1) # 房子位于重庆,占地面积为1000,剩余面积1000,拥有的家具有[]
创建对象并调用实例属性和方法
# 创建家具类
class Furniture():
def __init__(self,name,area):
# 家具名字
self.name = name
# 家具面积
self.area = area
class Home():
def __init__(self,address,area):
# 地理位置
self.address = address
# 房屋面积
self.area = area
# 剩余面积
self.free_area = area
# 家具列表
self.furniture = []
def __str__(self) -> str:
return f'房子位于{self.address},占地面积为{self.area},剩余面积{self.free_area},拥有的家具有{self.furniture}'
def add_furniture(self,item):
'''容纳家具'''
if self.free_area >= item.area:
self.furniture.append(item.name)
# 剩余面积改变
self.free_area -= item.area
else:
print('家具太大,面积太大了')
# 创建房子类
jia1 = Home('重庆',1000)
print(jia1) # 房子位于重庆,占地面积为1000,剩余面积1000,拥有的家具有[]
# 创建家具
bad = Furniture('双人床',6)
safa = Furniture('沙发',10)
lanqiuchang = Furniture('篮球场',10000)
jia1.add_furniture(bad)
print(jia1) # 房子位于重庆,占地面积为1000,剩余面积1000,拥有的家具有['双人床']
jia1.add_furniture(safa)
print(jia1) # 房子位于重庆,占地面积为1000,剩余面积1000,拥有的家具有['双人床', '沙发']
jia1.add_furniture(lanqiuchang)
print(jia1) # 房子位于重庆,占地面积为1000,剩余面积1000,拥有的家具有['双人床', '沙发']