综合应用
1 烤地瓜应用
1.1 需求
需求主线:
我们可以通过时间和地瓜的状态来定义这就是他的两个关键点,而两者之间又有依赖关系,时间控制状态发生的变化,所以我在下面也洗了相关的时间节点和对应的地瓜状态
-
被烤的时间和对应的地瓜状态
0-3分钟: 生的
3-5分钟:半生不熟
5-8分钟: 熟的
超过8分钟: 烤糊了
-
添加的调料:
用户可以按自己的意愿添加调料
1.2 步骤分析
需求涉及一个事物: 地瓜
例涉及一个类,如这里的:地瓜类
所以第一步:将地瓜分类
第二步:通过地瓜类创建一个对象
1.2.1 定义类
- 地瓜的属性
- 被烤的时间
- 地瓜的状态
- 添加的调料
- 地瓜的方法(所以地瓜有两个实例方法)
- 被烤
- 用户根据意愿设定每次烤地瓜的时间
- 判断地瓜被烤的总时间是在哪个区间,修改地瓜状态
- 添加调料
- 用户根据意愿设定添加的调料
- 将用户添加的调料存储
- 显示对象信息
2 代码实现
2.1 定义地瓜类初始化代码
# 1.定义类:初始化属性、被烤和添加调料的方法,显示对象信息的 str
class SweetPotato():
# 定义初始化属性
def __init__(self):
# 被烤的时间,默认初始化为 0
self.cook_time = 0
# 地瓜状态,默认初始化为生
self.cook_state = '生的'
# 调料列表,可能会涉及到很多种调料,所以需要通过列表 list 来接收
self.condiments = []
2.2 定义烤地瓜方法
# 定义 cook 函数,self 为接收的实例,time 为需要烤的时间,从而得到地瓜的状态
def cook(self,time):
"""烤地瓜的方法,通过烤地瓜的时间相加来判断烤地瓜的状态"""
self.cook_time += time
if 0 <= self.cook_time < 3 :
self.cook_state = '生的'
elif 3 <= self.cook_time < 5:
self.cook_state = '半生不熟'
elif 5 <= self.cook_time < 8:
self.cook_state = '熟了'
elif self.cook_time >= 8 :
self.cook_state = '烤糊了'
2.3 定义添加调料方法,并调用该实例方法
# 添加调料
def add_condiments(self,condiments):
# 追加 condiments 到实例调料列表中
self.condiments.append(condiments)
2.4 书写 str 魔法方法,用于输出对象状态
def __str__(self):
return f'地瓜烤的时间:{self.cook_time},当前状态是{self.cook_state},已添加调料{self.condiments}'
3 创建实例用于测试
这里我通过调用 SweetPotato()
类,并赋值给 digua1
实例,通过调用 cook 方法定义烤的时间,和 add_condiments
方法来添加调料用于测试
# 2.创建对象并调用对应的实例方法
digua1 = SweetPotato()
print(digua1)
digua1.cook(2)
digua1.add_condiments('白砂糖')
print(digua1)
digua1.cook(3)
digua1.add_condiments('辣椒面')
print(digua1)
[14:53:39 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
地瓜烤的时间:0,当前状态是生的,已添加调料[]
地瓜烤的时间:2,当前状态是生的,已添加调料['白砂糖']
地瓜烤的时间:5,当前状态是熟了,已添加调料['白砂糖', '辣椒面']
4 代码总览
# 1.定义类:初始化属性、被烤和添加调料的方法,显示对象信息的 str
class SweetPotato():
# 定义初始化属性
def __init__(self):
# 被烤的时间,默认初始化为 0
self.cook_time = 0
# 地瓜状态,默认初始化为生
self.cook_state = '生的'
# 调料列表,可能会涉及到很多种调料,所以需要通过列表 list 来接收
self.condiments = []
# 定义 cook 函数,self 为接收的实例,time 为需要烤的时间,从而得到地瓜的状态
def cook(self,time):
"""烤地瓜的方法,通过烤地瓜的时间相加来判断烤地瓜的状态"""
self.cook_time += time
if 0 <= self.cook_time < 3 :
self.cook_state = '生的'
elif 3 <= self.cook_time < 5:
self.cook_state = '半生不熟'
elif 5<= self.cook_time < 8:
self.cook_state = '熟了'
elif self.cook_time >= 8 :
self.cook_state = '烤糊了'
# 添加调料
def add_condiments(self,condiments):
# 追加 condiments 到实例调料列表中
self.condiments.append(condiments)
def __str__(self):
return f'地瓜烤的时间:{self.cook_time},当前状态是{self.cook_state},已添加调料{self.condiments}'
# 2.创建对象并调用对应的实例方法
digua1 = SweetPotato()
print(digua1)
digua1.cook(2)
digua1.add_condiments('白砂糖')
print(digua1)
digua1.cook(3)
digua1.add_condiments('辣椒面')
print(digua1)