Python - 面向对象编程 - 小实战(3)
需求
- 房子(House)有户型、总面积、家具名称列表;新房子没有任何的家具
- 家具(HouseItem)有名字、占地面积
- 席梦思(bed) 占地 4 平米
- 衣柜(bed) 占地 2 平米
- 餐桌(bed) 占地 1.5 平米
- 将以上三个家具添加到房子中
- 打印房子时,要求输出:户型、总面积、剩余面积、家具名称列表
需求分析
- 家具有两个属性,房子表面上有三个属性
- 新房子没有任何的家具,代表构造方法不需要给家具名称列表属性初始化赋值
- 但房子其实还有一个特殊属性,剩余面积,它的初始值应该和总面积相同
- 房子添加家具后,剩余面积应该减掉家具的占地面积
- 席梦思、衣柜、餐桌都是一个具体的对象,都是家具类的实例对象
思考:房子、家具两个类应该先开发哪个类
- 家具类
- 因为家具类简单,只有两个方法,且没有行为
- 房子要使用到家具,被依赖的类,通常应该先开发,可以避免在开发主类过程中,要中途插入开发被依赖的类
类图
实现代码
家具类
class HouseItem:
# 构造方法
def __init__(self, name, area):
self.name = name
self.area = area def __str__(self):
return f"家具名称:{self.name} 占地面积:{self.area}"
房子类
class House:
# 构造方法
def __init__(self, type, area):
self.house_type = type
self.area = area
# 剩余面积
self.free_area = self.area
# 家具名称列表
self.item_list = [] # str
def __str__(self):
return f"户型:{self.house_type}\n" \
f"总面积:{self.area}\n" \
f"剩余面积:{self.free_area}\n" \
f"家具:{self.item_list}\n" # 添加家具
def add_item(self, item):
# 1、家具占地面积>剩余面积
if item.area > self.free_area:
print("剩余面积不足以添加 ", item.name)
return
# 2、添加家具名称
self.item_list.append(item.name)
# 3、计算剩余面积
self.free_area -= item.area
执行代码
# 创建三个家具
bed = HouseItem("席梦思", 4)
chest = HouseItem("衣柜", 2)
table = HouseItem("餐桌", 1.5) # 创建房子实例对象
poloHouse = House("120平复试", 120)
# 添加家具
poloHouse.add_item(bed)
poloHouse.add_item(chest)
poloHouse.add_item(table)
# 打印房子信息
print(poloHouse) # 输出结果
户型:120平复试
总面积:120
剩余面积:112.5
家具:['席梦思', '衣柜', '餐桌']
Python - 面向对象编程 - 小实战(3)的更多相关文章
- Python - 面向对象编程 - 小实战(1)
题目 设计一个类Person,生成若干实例,在终端输出如下信息 小明,10岁,男,上山去砍柴 小明,10岁,男,开车去东北 小明,10岁,男,最爱大保健 老李,90岁,男,上山去砍柴 老李,90岁,男 ...
- Python - 面向对象编程 - 小实战(2)
需求 小明和小美都爱跑步 小明体重 75 公斤 小美体重 45 公斤 每次跑步会减肥 0.5 公斤 每次吃东西体重增加 1 公斤 需求分析 小明.小美都是一个具体的对象,他们都是人,所以应该抽象成人类 ...
- python 面向对象编程 - 小游戏
面向对象写的小游戏 欢迎玩耍 class Omnicience: camp = 'Omniscience' def __init__(self, name, atk=100, hp=1000, mp= ...
- python面向对象编程小程序- 选课系统
选课系统 花了一晚上写的,可能还存在不足 1.程序框架 2.文件夹建立 D:/选课系统 |___api | |___common_api.py |___bil | |___common.py |___ ...
- python面向对象编程进阶
python面向对象编程进阶 一.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 ...
- Python 面向对象编程 继承 和多态
Python 面向对象编程 继承 和多态 一:多继承性 对于java我们熟悉的是一个类只能继承一个父类:但是对于C++ 一个子类可以有多个父亲,同样对于 Python一个类也可以有多个父亲 格式: c ...
- Python 面向对象编程基础
Python 面向对象编程基础 虽然Pthon是解释性语言,但是Pthon可以进行面向对象开发,小到 脚本程序,大到3D游戏,Python都可以做到. 一类: 语法: class 类名: 类属性,方法 ...
- python面向对象编程学习
python面向对象编程 基本概念理解 面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作 ...
- 图解python | 面向对象编程
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/56 本文地址:http://www.showmeai.tech/article-det ...
随机推荐
- python3中的希尔排序
def shell_sort(alist): n = len(alist) # 初始步长 gap = round(n / 2) while gap > 0: # 按步长进行插入排序 for i ...
- C中的内置函数
1 //#include <stdio.h> 2 //#include <ctype.h> 3 //#include <math.h> 4 //#include & ...
- Android菜鸟进字节跳动,居然是看了这个......
谈谈我的真实感受吧- 程序员真的是需要将终生学习贯彻到底的职业,一旦停止学习,离被淘汰,也就不远了. 金三银四.金九银十跳槽季,这是一个千年不变的话题,每到这个时候,很多人都会临阵磨枪,相信不快也光. ...
- Cookie和Session得使用理解
Cookie 饼干 什么是Cokkie? 1.Cookie 翻译过来是饼干的意思. 2.Cookie 是服务器通知客户端保存键值对的一种技术. 3.客户端有了 Cookie 后,每次请求都发送给服务器 ...
- JAVA的一般输入输出 和 快速输入输出 (BufferedReader&BufferedWrite)(转载)
1.JAVA的一般输入输出 和 快速输入输出 (BufferedReader&BufferedWrite) 摘要 本文主要介绍快速输入输出, 文中提到了几个IO类,这里推荐使用Buffered ...
- CAS5.3服务器搭建与客户端整合SpringBoot以及踩坑笔记
CAS5.3服务器搭建与客户端整合SpringBoot以及踩坑笔记 cas服务器的搭建 导出证书(1和2步骤是找了课程,随便写了一下存记录,不过对于自己测试不投入使用应该不影响) C:\Users\D ...
- 0基础学小程序----day2
目录结构的三部分如上 下来我们看看 框架全局文件 app.js小程序逻辑 再看app.json 小程序公共设置可以对五个功能进行设置 我们再来逐一看看 页面路径那里 你建个路径,他会自动生成文件夹 ...
- iNeuOS工业互网平台,在纸业领域的成功应用案例
目 录 1. 项目背景... 2 2. 项目基本情况... 3 3. 概念解释... 5 1. 项目背景 最终用户是全国第5大纸业集团之一,年浆纸产能40 ...
- Java集合框架详细总结
一:Collection集合 呼~,历过好几天的奋战终于把集合框架肝完了,b站某马老师讲的是真的非常详细而且动听,原理给你分析得明明白白的,此前也找了许多关于集合这一大章节的视频,发现更多的是针对于使 ...
- 泛微OA e-cology 数据库接口信息泄露学习
泛微OA e-cology 数据库接口信息泄露 漏洞信息 攻击者可通过存在漏洞的页面直接获取到数据库配置信息.如果攻击者可直接访问数据库,则可直接获取用户数据,甚至可以直接控制数据库服务器:会将当前连 ...