ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

python面向对象之摆放家具

python面向对象之摆放家具 主包使用的教程http://【【python教程】python-面向对象教程共100讲此处102983转码失败故附上网盘地址学完基础教程的同学可以深入学习】https://www.bilibili.com/video/BV15t411q7L1?p21vd_source88d4164d269215752602ee47f9fbd4c3注意几个问题1.__str__必须返回一个字符串不定义print默认返回变量对象的类和内存地址2.由于House有调用HouseItem所以先写调用的而且不需要定义free_area 和 item_list可以由外部传入。所以不定义形参变量对象的默认状态这里代码就属于这类或者从其他属性计算的值3.self.item_list.append(item) # 这里添加的是 HouseItem 对象本身打印my_home时调用House.__str__→ 返回字符串字符串中的self.item_list是一个列表列表里存的是HouseItem对象列表打印对象时默认显示内存地址所以不能使用。可以手动拼接def __str__(self): # 手动拼接家具信息 items_str , .join([str(item) for item in self.item_list]) return f户型{self.house_type}总面积{self.area:.2f}剩余面积{self.free_area:.2f}家具有{items_str}或者只存家具名称def add_item(self, item): self.item_list.append(item.name) # 只存名字 self.free_area - item.area # 减面积完整代码class HouseItem: def __init__(self, name, area): self.name name self.area area def __str__(self): #str必须返回一个字符串 return %s 占地 %.2f % (self.name, self.area) bed HouseItem(席梦思, 40) closet HouseItem(衣柜, 200) table HouseItem(餐桌, 1.5) print(bed) print(closet) print(table) class House: def __init__(self, house_type, area): #注意这里不需要定义形参free_area, item_list,直接由外部传入 self.house_type house_type self.area area self.free_area area #剩余面积初始化也是area self.item_list [] #开始时的家具列表为空 def __str__(self): return(户型是 %s, 总面积 %.2f, 剩余面积 %.2f 家具有 %s % (self.house_type, self.area, self.free_area,self.item_list)) def add_item(self, item): if item.area self.free_area: print(%s 的面积太大了无法添加 %item.name) else: self.item_list.append(item.name) # 只存名字 self.free_area - item.area my_home House(大平层, 150) #创建房子时只需要关心户型、面积家具列表自动管理不需要手动传空列表。 my_home.add_item(bed) my_home.add_item(closet) my_home.add_item(table) print(my_home)
返回列表