Python面向对象编程从零开始(5)—— 小姐姐要买房
(点击上方Python爱好者社区,可快速关注)
作者:王大伟
博客专栏:https://www.hellobi.com/u/wangdawei/articles
Python爱好者社区 唯一小编
前言
前文传送门:
分割线-----------------------------------------------------------------
好几天没连载了,最近工作学习忙啊,下周去西安找小姐姐玩一周,考虑要不要带着电脑继续连载呢~
上一次讲到小姐姐请客吃饭,结果请我吃泡面。。。。。。
小姐姐要买房!%s%d 的使用
今天,小姐姐和我说要买房,what?,还是在上海买!等等,在人民广场买。。
你们随意感受一下上海的房价,人民广场在上海黄浦区。。。
既然要买房,那就买吧
class Home:
def __init__(self,new_area,new_info,new_addr):
self.area = new_area
self.info = new_info
self.addr = new_addr
def __str__(self):
return '房子的面积是:%d,户型是:%s,地址是:%s'%(self.area,self.info,self.addr)
fangzi = Home(120,'三室一厅','上海市 黄浦区 人民大道 666号')
print(fangzi)
看一下运行结果:
在这里,先定义了一个类,类名为Home
在类中,先定义了一个__init__()方法,用来初始化房子的area、information、address(在方法中定义了三个属性)
然后定义了一个__str__()方法,用来做输出,输出房子的area、information、address
注意:我们首先讲一下这个输出格式,举个例子帮助理解一下。
print('小姐姐名叫:%s'%'王梦瑶')
%s表示传递的是string字符串
%d表示传递的是整型十进制
例如:
print('王梦瑶的BWH是:%d,%d,%d'%(80,57,91))
咳咳,也就是说,当传递多个参数输出时,统一在后面加括号,再在之前加%
添置家具,实现动态显示占用空间
首先,当然是要买个床!双人床!
所以定义一个类
class Furniture:
def __init__(self,new_name,new_area):
self.name = new_name
self.area = new_area
床的名称和床的尺寸~~~~~
然后定义一个床的占用面积:
def __str__(self):
return '%s占用的面积是:%d'%(self.name,self.area)
然后我创建一个对象(买了一个双人豪华大床)
bed1 = Furniture('双人豪华大床',6)
print(bed1)
运行得到结果:
意思是这个床占用面积是6平方米,果然很大!
总体代码如下:
class Home:
def __init__(self,new_area,new_info,new_addr):
self.area = new_area
self.info = new_info
self.addr = new_addr
def __str__(self):
return '房子的面积是:%d,户型是:%s,地址是:%s'%(self.area,self.info,self.addr)
class Furniture:
def __init__(self,new_name,new_area):
self.name = new_name
self.area = new_area
def __str__(self):
return '%s占用的面积是:%d'%(self.name,self.area)
fangzi = Home(120,'三室一厅','上海市 黄浦区 人民大道 666号')
print(fangzi)
bed1 = Furniture('双人豪华大床',6)
print(bed1)
当然除了在卧室,还可以在厨房,浴室,阳台,客厅。。。
等地方添置家具(听说留一段空白可以引人遐想)
合理显示剩余空间
暂且不考虑房间布局,首先,我们知道家具是存在的,所以它们是占用空间的。
房子就这么大,存放的家具是有限的,所以家具的占用面积之和不能超过房间总面积(你要是告诉我空调是挂式的不是落地的所以不占用地面空间的话)
我。。。。就假设房间是二维的吧,就像宣传房子户型的宣传单上画的
那怎么实现这个功能呢?
首先,我们对Home类进行修改:
class Home:
def __init__(self,new_area,new_info,new_addr):
self.area = new_area
self.info = new_info
self.addr = new_addr
self.left_area = new_area
self.contain_items = []#保存物品的名字
添加剩余空间和包含的物品的属性
然后,修改__init__()方法:
def __str__(self):
msg = '房子的总面积是:%d,可用面积是:%d,户型是:%s,地址是:%s'%(self.area,self.left_area,self.info,self.addr)
msg += '当前房子里的物品有%s'%(str(self.contain_items))
return msg
用msg保存信息,并添加可用面积输出,并每次加上房间中的总物品清单
注意:因为self.contain_items是列表,要转化为str字符串输出,所以要强制转换类型 str(self.contain_items)
在Home类中新加add_item方法
def add_item(self,item):
self.left_area -= item.area #item.area获取对象的属性,家具占用空间
self.contain_items.append(item.name)
调用时可以从当前空间减去家具占用的空间得到剩余空间,并且可以加上新增加的家具信息
所以,我们可以得到总的代码如下:
class Home:
def __init__(self,new_area,new_info,new_addr):
self.area = new_area
self.info = new_info
self.addr = new_addr
self.left_area = new_area
self.contain_items = []#保存物品的名字
def __str__(self):
msg = '房子的总面积是:%d,可用面积是:%d,户型是:%s,地址是:%s'%(self.area,self.left_area,self.info,self.addr)
msg += '当前房子里的物品有%s'%(str(self.contain_items))
return msg
def add_item(self,item):
self.left_area -= item.area #item.area获取对象的属性,家具占用空间
self.contain_items.append(item.name)
class Furniture:
def __init__(self,new_name,new_area):
self.name = new_name
self.area = new_area
def __str__(self):
return '%s占用的面积是:%d'%(self.name,self.area)
fangzi = Home(120,'三室一厅','上海市 黄浦区 人民大道 666号')
print(fangzi)
bed1 = Furniture('双人豪华大床',6)
print(bed1)
fangzi.add_item(bed1)
print(fangzi)
aircondition = Furniture('立式空调',1)
fangzi.add_item(aircondition)
print(fangzi)
我依次添加了床和空调进去
结果显示:
这样就完成了房间剩余空间的显示啦!
小姐姐对我的技术表示很满意
(听说留一段空白可以引人遐想)
想继续边听讲故事边零基础学习Python面向对象编程么,请持续关注连载~
新福利:点击阅读原文了解618活动详细信息
关注公众号,“Python爱好者社区”,回复“爬虫”即可获取崔老师爬虫免费学习视频。
为大家提供与Python相关的最新技术和资讯。
长按指纹 > 识别图中二维码 > 添加关注