python对象应用 - 综合应用

综合应用

都看了对象了,不来看看怎么应用吗???

烤地瓜

需求

需求主线:

  1. 被烤的时间和对应的地瓜状态:
    0-3分钟:生的
    3-5分钟:半生不熟
    5-8分钟:熟的
    超过8分钟:烤糊了
  2. 添加的调料
    用户可以按自己的意愿添加调料

步骤分析

需求涉及一个事物:地瓜
涉及一个类:地瓜类

  • 地瓜的属性(__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,拥有的家具有['双人床', '沙发']
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

溏心蛋*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值