面向对象案例讲解 | 手把手教你入门Python之五十六

简介: 通过解决房屋放置家具问题来解释面向对象的特点。

上一篇:函数案例讲解 | 手把手教你入门Python之五十五
下一篇:Python的内置属性 | 手把手教你入门Python之五十七

本文来自于千锋教育在阿里云开发者社区学习中心上线课程《Python入门2020最新大课》,主讲人姜伟。

面向对象练习

房子(House)有户型、总面积、剩余面积 和 家具名称列表 属性
新房子没有任何的家具
将 家具的名称 追加到 家具名称列表 中
判断 家具的面积 是否 超过剩余面积,如果超过,提示不能添加这件家具
家具(Furniture)有 名字 和 占地面积属性,其中
席梦思(bed)占地 4 平米
衣柜(chest)占地 2 平米
餐桌(table)占地 1.5 平米
将以上三件 家具 添加到 房子 中
打印房子时,要求输出:户型、总面积、剩余面积、家具名称列表

class House(object):
    # 缺省参数
    def __init__(self,house_type, total_area, fru_list=None):
        if fru_list is None:  # 如果这个值是None
            fru_list = []   # 将fru_list设置为空列表

        self.house_type = house_type
        self.total_area = total_area
        self.free_area = total_area * 0.6
        self.fru_list = fru_list

    def add_fru(self, x):
        if self.free_area < x.area:
            print('剩余面积不足,放不进去了')
        else:    
            self.fru_list.append(x.name)
            self.free_area -= x.area

    def __str__(self):
        return '户型={}, 总面积={}, 剩余面积={}, 家具列表={}'.format(self.house_type, self.total_area, self.free_area, self.fru_list)

class Furniture(object):
    def __init__(self, name, area):
        self.name = name
        self.area = area


# 创建房间对象的时候,传入户型和总面积
house = House('一室一厅', 20)


bed = Furniture('席梦思', 4)
chest = Furniture('衣柜', 2)
table = Furinture('餐桌', 1.5)
sofa = Furinture('沙发', 10)


# 把家具添加到房间里(面向对象关注点:让谁做)
house.add_fru(sofa)
house.add_fru(bed)
house.add_fru(chest)
house.add_fru(table)

print(house)
AI 代码解读

执行结果:
image.png

配套视频

相关文章
Python入门:8.Python中的函数
### 引言 在编写程序时,函数是一种强大的工具。它们可以将代码逻辑模块化,减少重复代码的编写,并提高程序的可读性和可维护性。无论是初学者还是资深开发者,深入理解函数的使用和设计都是编写高质量代码的基础。本文将从基础概念开始,逐步讲解 Python 中的函数及其高级特性。
Python入门:8.Python中的函数
Python入门:6.深入解析Python中的序列
在 Python 中,**序列**是一种有序的数据结构,广泛应用于数据存储、操作和处理。序列的一个显著特点是支持通过**索引**访问数据。常见的序列类型包括字符串(`str`)、列表(`list`)和元组(`tuple`)。这些序列各有特点,既可以存储简单的字符,也可以存储复杂的对象。 为了帮助初学者掌握 Python 中的序列操作,本文将围绕**字符串**、**列表**和**元组**这三种序列类型,详细介绍其定义、常用方法和具体示例。
Python入门:6.深入解析Python中的序列
Python入门:9.递归函数和高阶函数
在 Python 编程中,函数是核心组成部分之一。递归函数和高阶函数是 Python 中两个非常重要的特性。递归函数帮助我们以更直观的方式处理重复性问题,而高阶函数通过函数作为参数或返回值,为代码增添了极大的灵活性和优雅性。无论是实现复杂的算法还是处理数据流,这些工具都在开发者的工具箱中扮演着重要角色。本文将从概念入手,逐步带你掌握递归函数、匿名函数(lambda)以及高阶函数的核心要领和应用技巧。
Python入门:9.递归函数和高阶函数
Python入门:7.Pythond的内置容器
Python 提供了强大的内置容器(container)类型,用于存储和操作数据。容器是 Python 数据结构的核心部分,理解它们对于写出高效、可读的代码至关重要。在这篇博客中,我们将详细介绍 Python 的五种主要内置容器:字符串(str)、列表(list)、元组(tuple)、字典(dict)和集合(set)。
Python入门:7.Pythond的内置容器
Python 编程基础与实战:从入门到精通
本文介绍Python编程语言,涵盖基础语法、进阶特性及实战项目。从变量、数据类型、运算符、控制结构到函数、列表、字典等基础知识,再到列表推导式、生成器、装饰器和面向对象编程等高级特性,逐步深入。同时,通过简单计算器和Web爬虫两个实战项目,帮助读者掌握Python的应用技巧。最后,提供进一步学习资源,助你在Python编程领域不断进步。
Python 高级编程与实战:深入理解面向对象与并发编程
本文深入探讨Python的高级特性,涵盖面向对象编程(继承、多态、特殊方法、类与实例属性)、异常处理(try-except、finally)和并发编程(多线程、多进程、异步编程)。通过实战项目如聊天服务器和异步文件下载器,帮助读者掌握这些技术,编写更复杂高效的Python程序。
6个案例15分钟让你了解Python套路
Python以其简洁易读的语法,成为编程初学者的首选。本文通过7个经典代码案例,带你快速了解Python编程的核心概念和常用技巧: 1. **九九乘法口诀**:使用嵌套循环打印乘法表。 2. **列表求和**:展示两种方法(for循环和内置函数sum())计算列表元素之和。 3. **素数判断**:编写函数判断一个数是否为素数。 4. **斐波那契数列**:生成指定长度的斐波那契数列。 5. **冒泡排序**:实现简单的冒泡排序算法。 6. **汉诺塔问题**:通过递归解决经典的汉诺塔问题。 这些案例不仅展示了Python的基础语法,更体现了编程思维的重要性,帮助初学者逐步掌握编程套路。
34 2
python学习13-面向对象的三大特征、特殊方法和特殊属性、类的浅拷贝和深拷贝
python学习13-面向对象的三大特征、特殊方法和特殊属性、类的浅拷贝和深拷贝
29.从入门到精通:Python3 面向对象继承 多继承 方法重写 类属性与方法
29.从入门到精通:Python3 面向对象继承 多继承 方法重写 类属性与方法
28.从入门到精通:Python3 面向对象 面向对象技术简介 类定义 类对象 类的方法
28.从入门到精通:Python3 面向对象 面向对象技术简介 类定义 类对象 类的方法