python面向对象编程从零开始_Python面向对象编程从零开始(5)—— 小姐姐要买房

前言

前文传送门:

分割线---------------------------------------------------------------------------------------------

好几天没连载了,最近工作学习忙啊,下周去西安找小姐姐玩一周,考虑要不要带着电脑继续连载呢~

上一次讲到小姐姐请客吃饭,结果请我吃泡面。。。。。。

小姐姐要买房!%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面向对象编程么,请持续关注连载~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值