Python封装案例——我买了一套房子!
作者:互联网
摆放家具案例
房子有户型、总面积和家具名称列表。新房子里没有家具。
家具有名字和占地面积。
PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取
席梦思床占地4平米 衣柜占地2平米 餐桌占地1.5平米 123
将家具添加到房子中。
输出房子的户型、总面积、剩余面积和家具名称列表。
程序设计
分析发现,案例中包含两个类,一个房子类,一个家具类。
房子类包含的属性有:户型、占地面积、家具列表
房子类包含的方法有:添加家具方法
家具类包含的属性有:家具名称、占地面积
家具类不包含方法
因为家具类如果要调用添加家具方法,需要有具体的家具,所以我们需要首先定义家具类,然后用家具类生成几个家具对象方便调用。
# *-*coding:utf-8 *-* class Furniture: def __init__(self, fur_name, fur_area): self.name = fur_name self.area = fur_area def __str__(self): return "%s占地%.2f" % (self.name, self.area) bed = Furniture("席梦思", 4) closet = Furniture("衣柜", 2) table = Furniture("餐桌", 1.5) 12345678910111213141516
家具生成好之后,我们就可以开始定义房子类,因为房子类初始的时候没有家具,所以可以先定义户型、总面积两个属性。此外还有两个属性,剩余面积和家具名称列表,可以通过直接赋值或计算得到。可以将列表当做类的属性。
只有需要从外部传递进来的参数,才需要定义成初始化方法的形参。
通过__str__方法可以通过print()方法打印通过房子类生成的对象的描述。
当我们先定义好了一个房子类后,不妨先生成一个房子对象,然后打印输出一下看一看效果,后续再封装添加家具的方法。
class House: def __init__(self, house_type, area): self.type = house_type self.area = area self.furniture = [] self.free_area = area def add(self, item): print("要添加%s" % item) pass def __str__(self): return "%s的房子:\n总面积%.2f\n含有家具%s\n剩余面积%.2f" % \ (self.type, self.area, self.furniture, self.free_area) my_home = House("两室一厅", 60) print(my_home) 12345678910111213141516171819
添加家具的方法
1,首先判断家具面积是否大于剩余面积。
2,将家具名称追加到家具名称列表中。
3,用房子的剩余面积减去家具的面积。
def add(self, item): print("要添加%s" % item) # 判断家具面积是否大于剩余面积 if item.area > self.free_area: print("家具太大了") return # 添加家具到家具列表 self.furniture.append(item.name) # 用房子剩余面积减去家具面积 self.free_area -= item.area 12345678910
最后完成代码,并将家具一个个摆进去:
# *-*coding:utf-8 *-* class Furniture: def __init__(self, fur_name, fur_area): self.name = fur_name self.area = fur_area def __str__(self): return "%s占地%.2f" % (self.name, self.area) class House: def __init__(self, house_type, area): self.type = house_type self.area = area self.furniture = [] self.free_area = area def add(self, item): print("要添加%s" % item) # 判断家具面积是否大于剩余面积 if item.area > self.free_area: print("家具太大了") return # 添加家具到家具列表 self.furniture.append(item.name) # 用房子剩余面积减去家具面积 self.free_area -= item.area def __str__(self): return "%s的房子:\n总面积%.2f\n含有家具%s\n剩余面积%.2f" % \ (self.type, self.area, self.furniture, self.free_area) bed = Furniture("席梦思", 4) closet = Furniture("衣柜", 2) table = Furniture("餐桌", 1.5) print(bed) print(closet) print(table) my_home = House("两室一厅", 60) my_home.add(bed) my_home.add(closet) my_home.add(table) print(my_home) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
最后输出的结果是:
席梦思占地4.00 衣柜占地2.00 餐桌占地1.50 要添加席梦思占地4.00 要添加衣柜占地2.00 要添加餐桌占地1.50 两室一厅的房子: 总面积60.00 含有家具['席梦思', '衣柜', '餐桌'] 剩余面积52.50 12345678910
还不错,我什么时候能够在一线城市郊区拥有一套两室一厅60平米的房子就好了。
标签:__,封装,area,Python,self,案例,item,家具,print 来源: https://blog.csdn.net/weixin_43881394/article/details/110073860