【Python基础编程212 ● 面向对象 ● 面向对象案例:烤红薯】
---------Python基础编程---------
Author : AI菌
【学习目标】
1.强化面向对象的设计能力,进一步理解类、属性和方法
2.强化方法参数self的理解。方法中的self可以获取和修改属性
【需求文档】
1.地瓜有自己的状态,默认是生的,地瓜可以进行烧烤 2.地瓜有自己烧烤的总时间,由每次烧烤的时间累加得出 3.地瓜烧烤时,需要提供本次烧烤的时间 4.地瓜烧烤时,地瓜状态随着烧烤总时间的变化而改变: [0, 3)生的、[3, 6)半生不熟、[6, 8)熟了、>=8烤糊了 5.输出地瓜信息时,可以显示地瓜的状态和烧烤的总时间
【分析方法】
面向对象设计的三步走策略:
1.确定类:判断那段文件描述的哪个对象,描述的是哪个对象,就创建哪个对象的类;
2.确定属性:根据文字描述,确定应该定义哪些属性
对象有的东西,一定是属性;
3.确定方法:根据文字描述,确定应该定义哪些方法
对象能做的事情,一定是方法;
根据文字描述,确定应该在方法中做什么事情。
【需求分析】
1.确定类:描述的是哪个对象,就创建哪个对象的类; 定义红薯类:SweetPotato 2.确定属性:对象有的东西,一定是属性 定义状态:state = "生的" 定义烧烤总时间 total_time = 0 3.确定方法:对象能做的事情,一定是方法 __init__(self)方法: 添加属性 cook(self,time)方法: 1)、累计总时间 2)、修改状态 __str__(self)方法:打印对象时,返回状态和总时间
【代码实现】
""" 1.确定类:描述的是哪个对象,就创建哪个对象的类; 定义红薯类:SweetPotato 2.确定属性:对象有的东西,一定是属性 定义状态:state = "生的" 定义烧烤总时间 total_time = 0 3.确定方法:对象能做的事情,一定是方法 __init__(self)方法: 添加属性 cook(self,time)方法: 1)、累计总时间 2)、修改状态 __str__(self)方法:打印对象时,返回状态和总时间 """ class SweetPotato: def __init__(self): self.state = "生的" self.total_time = 0 def cook(self, time): """ 烧烤的方法 :param time: 本次烧烤的时间 """ # 1.累加烧烤的总时间 self.total_time += time # 2.根据总时间修改状态 if 0 <= self.total_time < 3: self.state = "生的" elif 3 <= self.total_time < 6: self.state = "半生不熟" elif 6 <= self.total_time < 8: self.state = "熟了" elif self.total_time >= 8: self.state = "糊了" else: print("微波炉坏了...") def __str__(self): if self.total_time > 0: return f"总时间为:{self.total_time},状态为{self.state}" else: return f"总时间为:{self.total_time},状态为生的" # 创建红薯对象 sp = SweetPotato() # 烤红薯 sp.cook(2) print(sp) sp.cook(2) print(sp) sp.cook(2) print(sp) sp.cook(2) print(sp) sp.cook(-10) print(sp)
【往期精彩】
▷【Python基础编程196 ● 读取文件的4种方式】
▷【Python基础编程197 ● 读取文件的4种方式】
▷【Python基础编程198 ● 读取文件的4种方式】
▷【Python基础编程199 ● Python怎么读/写很大的文件】
▷【Python基础编程200 ● 读取文件的4种方式】
▷【Python基础编程201 ● 读取文件的4种方式】
▷【Python基础编程202 ● 读取文件的4种方式】
▷【Python基础编程203 ● 读取文件的4种方式】
【加群交流】