编程语言
首页 > 编程语言> > Python封装案例——我买了一套房子!

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

作者:互联网

摆放家具案例

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

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