(一)需求
1.被烤的时间和对应的地瓜状态
2.添加调料
(二)步骤分析
需求涉及一个事物:地瓜,故案例涉及一个类:地瓜类。
1.定义类
(三)代码实现
1、定义类
地⽠属性,定义地⽠初始化属性,后期根据程序推进更新实例属性
# 1.定义类:初始化属性,被烤,添加属性,现实对象信息的str
class SweetPotato:
def __init__(self):
# 被烤的时间
self.cook_time = 0
# 烤的状态
self.cook_state = "生的"
# 调料列表
self.condiments = []
2、定义烤地⽠⽅法
# 创建对象并调用对应的实例方法
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 = "烤糊了"
3、书写str魔法⽅法,⽤于输出对象状态
def __str__(self):
return "这个地瓜被烤的时间是{},状态是{}".format(self.cook_time, self.cook_state)
4、 创建对象,测试实例属性和实例⽅法
digua1 = SweetPotato()
print(digua1)
digua1.cook(2)
print(digua1)
digua1.cook(2)
print(digua1)
输出:
这个地瓜被烤的时间是0,状态是生的
这个地瓜被烤的时间是2,状态是生的
这个地瓜被烤的时间是4,状态是半生不熟
5、定义添加调料⽅法,并调⽤该实例⽅法
def add_condiments(self, condiment):
self.condiments.append(condiment)
def __str__(self):
return "这个地瓜被烤的时间是{},状态是{},添加调料是{}".format(self.cook_time, self.cook_state, self.condiments)
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 < 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, condiment):
self.condiments.append(condiment)
def __str__(self):
return "这个地瓜被烤的时间是{},状态是{},添加调料是{}".format(self.cook_time, self.cook_state, self.condiments)
digua1 = SweetPotato()
print(digua1)
digua1.cook(2)
digua1.add_condiments("spicy")
print(digua1)
digua1.cook(2)
digua1.add_condiments("oil")
print(digua1)
1、需求
将⼩于房⼦剩余⾯积的家具摆放到房⼦中
2、步骤分析
需求涉及两个事物:房⼦和 家具,故被案例涉及两个类:房⼦类 和 家具类。
3、定义类
3.1、房⼦类
4、创建对象并调用相关方法
5、代码实现
6、定义类
# 定义家具类
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 = []
# 4个属性2个形参
def __str__(self):
7、创建对象并调⽤实例属性和⽅法
# 定义家具类
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 = []
# 4个属性2个形参
def add_furniture(self, item):
if item.area < self.free_area: # item.area, item.name 访问对象属性
self.furniture.append(item.name)
self.free_area -= item.area
else:
print("家具{}太大,剩余面积{}无法容纳".format(item.area, self.free_area))
def __str__(self):
return "房子位置{},房屋面积{},房屋剩余面积{},家具{}".format(self.address, self.area, self.free_area, self.furniture)
bed = Furniture("adult bed", 10)
sofa = Furniture("large sofa", 6)
jia1 = Home("beijing", 1000)
print(jia1)
jia1.add_furniture(sofa)
print(jia1)
ball = Furniture("big ball", 2000)
jia1.add_furniture(ball)
print(jia1)
输出:
房子位置beijing,房屋面积1000,房屋剩余面积1000,家具[]
房子位置beijing,房屋面积1000,房屋剩余面积994,家具['large sofa']
家具2000太大,剩余面积994无法容纳
房子位置beijing,房屋面积1000,房屋剩余面积994,家具['large sofa']