ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python封装案例——我买了一套房子!

2020-11-24 14:29:36  阅读:171  来源: 互联网

标签:__ 封装 area Python self 案例 item 家具 print


摆放家具案例

房子有户型、总面积和家具名称列表。新房子里没有家具。
家具有名字和占地面积。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

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/pythonlaodi/article/details/110073817

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有