Python面向对象封装的简明例子——摆放家具

实例一:摆放家具
需求如下:

家具(HouseItem)有名字和占地面,其中
席梦思(bed) 占地 4 平米
衣柜(chest) 占地 2 平米
餐桌(table) 占地 1.5 平米
打印出家具名称呵占地面积

分析:从以上需求我们可以看出 类是家具(HouseItem)
该类有两个属性:家具name和占地面积area
可以通过__init__()方法设置属性的初始值
可以通过__str__()方法打印需要的信息

所以分析结果见下表:
在这里插入图片描述
代码如下:

class Houseitem:
      def __init__(self,name,aera):
          self.name = name 
          self.area = area
      def __str__(self):
          return "[%s]  占地面积%.2f"  %(self.name,self.area)

bed = Houseitem("席梦思",4) #bed对象实例化,使这个对象具体化,具有两个属性,分别是name属性叫席梦思,area属性是4
print(bed) #打印bed这个对象,输出—__str__()中传入的内容
chest = Houseitem("衣柜",2) #chest对象实例化,使这个对象具体化,具有两个属性,分别是name属性叫衣柜,area属性是2
print(chest)#打印chest这个对象,输出—__str__()中传入的内容
table = Houseitem("table",1.5)#table对象实例化,使这个对象具体化,具有两个属性,分别是name属性叫书桌,area属性是1.5
print(table)#打印table这个对象,输出—__str__()中传入的内容
#输出结果
#[席梦思]  占地面积4.00
#[衣柜]  占地面积2.00
#[书桌]  占地面积1.50

实例二:将家具添加到房子中
需求如下:
将实例一中生成的家具添加到房子中,
打印房子时,要求输出:户型、总面积、剩余面积、家具名称列表

分析:
家具已经通过上一个Houseitem()类已经实现
房子需要通过一个房子类生成
需要一个方法将家具添加到房子中
需要四个属性来表示房子的户型、总面积、剩余面积、家具名称列表
属性 1. 房子的户型,需要外部输入实际参数,所以需要定义一个形参来给房子的户型传入值
属性 2. 总面积,需要外部输入实际参数,所以需要定义一个形参来给总面积传入值
属性 3. 剩余面积,剩余面积是通过计算得来,仅需要一个表示剩余面积的属性代表剩余面积的值,无形参
属性 4.家具名称列表,家具名称列表是通过调用方法来实现列表的添加,所以仅需要一个属性来表示列表,无形参

str()方法打印出户型、总面积、剩余面积、家具名称列表
init()方法输入房子的户型 和总面积
__add_item()方法来实现将家具添加到房子中

所以分析结果见下表:
在这里插入图片描述
代码如下

calss House:
      def __init__(self,house_type,area):
         self.house_type = house_type
         self.area = area
         self.free_area = free_area  #定义一个剩余面积属性
         self.item_list = []  #空列表用来存放放入房子这个对象中的家具
     def __str__(self):
         return (" 房子户型:%s \n 总面积: %.2f \n  剩余面积:%.2f \n 家具名称列表:%s \n" 
         %(self.house_type,self.area,
         self.free_area,self_item_list))
     def add_item(self,item):
         print("要添加%s",item)
         if item.area > self.area:
            print("%s面积太大,无法添加"%item.name)
         return
         self.item_list.append(item.name)
         self.free_area -=item.area

bed = Houseitem("席梦思",4)
print(bed)
#创建房子对象
my_home = House("两室一厅"60)
my_home.add_item(bed)
my_home.add_item(chest)
my_home.add_item(table)
print(my_home)


小结

创建了一个 房子类,使用到 init 和 str 两个内置方法
准备了一个 add_item 方法 准备添加家具
使用 房子类 创建了 一个房子对象
让 房子对象 调用了三次 add_item 方法,将 三件家具 以实参传递到 add_item 内部
本文参考链接
如有侵权,联系删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值