1. 分析“烤地瓜”的属性和方法
示例属性如下:cookedLevel : 这是数字;0~3表示还是生的,超过3表示半生不熟,超过5表示已经烤好了,超过8表示已经烤成木炭了!我们的地瓜开始时时生的
cookedString : 这是字符串;描述地瓜的生熟程度
condiments : 这是地瓜的配料列表,比如番茄酱、芥末酱等
示例方法如下:
cook() : 把地瓜烤一段时间
addCondiments() : 给地瓜添加配料
__init__() : 设置默认的属性
__str__() : 让print的结果看起来更好一些
class SweetPotato: """定义了一个地瓜类""" def __init__(self): self.cookedString = "生的" self.cookedLevel = 0 self.condiments = []#为了能够存储多个数据,往往在开发中让一个属性是列表 def __str__(self): return "地瓜 状态:%s(%d),添加的作料有:%s"%(self.cookedString, self.cookedLevel, str(self.condiments)) def cook(self, cooked_time): #因为这个方法被调用了多次,为了能够在一次调用这个方法的时候 能够 获取到上一次调用这个方法时的cooked_time #所以 需要在此,把cooked_time保存到这个对象的属性中,因为属性不会随着方法的调用而结束(一个方法被调用的时候 #是可以用局部变量来保存数据的,但是当这个方法定义结束之后这个方法中的所有数据就没有了) self.cookedLevel += cooked_time if self.cookedLevel >=0 and self.cookedLevel<3: self.cookedString = "生的" elif self.cookedLevel >=3 and self.cookedLevel<5: self.cookedString = "半生不熟" elif self.cookedLevel >=5 and self.cookedLevel<8: self.cookedString = "熟了" elif self.cookedLevel>8: self.cookedString = "烤糊了" def addCondiments(self, item): #因为item这个变量指向了一个 作料,所以 接下来需要将item放到append里面 self.condiments.append(item) #创建了一个地瓜对象 di_gua = SweetPotato() print(di_gua) #开始烤地瓜 di_gua.cook(1) print(di_gua) di_gua.cook(1) print(di_gua) di_gua.addCondiments("大蒜") di_gua.cook(1) print(di_gua) di_gua.cook(1) di_gua.addCondiments("番茄酱") print(di_gua) di_gua.cook(1) print(di_gua) di_gua.cook(1) di_gua.addCondiments("孜然") print(di_gua) di_gua.cook(1) print(di_gua) di_gua.addCondiments("芥末") di_gua.cook(1) print(di_gua) di_gua.cook(1) print(di_gua) di_gua.cook(1) print(di_gua) di_gua.cook(1) print(di_gua)
运行结果:
地瓜 状态:生的(0),添加的作料有:[]
地瓜 状态:生的(1),添加的作料有:[]
地瓜 状态:生的(2),添加的作料有:[]
地瓜 状态:半生不熟(3),添加的作料有:['大蒜']
地瓜 状态:半生不熟(4),添加的作料有:['大蒜', '番茄酱']
地瓜 状态:熟了(5),添加的作料有:['大蒜', '番茄酱']
地瓜 状态:熟了(6),添加的作料有:['大蒜', '番茄酱', '孜然']
地瓜 状态:熟了(7),添加的作料有:['大蒜', '番茄酱', '孜然']
地瓜 状态:熟了(8),添加的作料有:['大蒜', '番茄酱', '孜然', '芥末']
地瓜 状态:烤糊了(9),添加的作料有:['大蒜', '番茄酱', '孜然', '芥末']
地瓜 状态:烤糊了(10),添加的作料有:['大蒜', '番茄酱', '孜然', '芥末']
地瓜 状态:烤糊了(11),添加的作料有:['大蒜', '番茄酱', '孜然', '芥末']