【python实操】python小程序之封装(家具管理)

news2024/11/28 3:43:27

引言

python小程序之封装(家具管理)

文章目录

  • 引言
  • 一、封装(家具管理)
    • 1.1 题目
    • 1.2 代码
    • 1.3 代码解释
      • 1.3.1 类 `HouseItem`
      • 1.3.2 类 `House`
      • 1.3.3 实例化与调用
      • 1.3.4 运行结果
  • 四、思考

一、封装(家具管理)

1.1 题目

1.房子(House)有户型、总面积和家具名称列表

  • 新房子没有任何的家具

2.家具(Houseltem)有名字和占地面积,其中

  • 席梦思(bed)占地4平米
  • 衣柜(chest)占地2平米
  • 餐桌(table)占地1.5平米

3.将以上三件家具添加到房子中
4.打印房子时,要求输出:户型、总面积、剩余面积、家具名称列表

剩余面积:

  • 1.在创建房子对象时,定义一个剩余面积的属性,初始值和总面积相等
  • 2.当调用add_item方法,向房间添加家具时,让剩余面积-=家具面积

1.2 代码

class House:
    def __init__(self, htype, tarea):
        self.htype = htype
        self.tarea = tarea
        self.rarea = tarea
        self.list_item = []

    def __str__(self):
        return f'户型:{self.htype},总面积:{self.tarea}平米,剩余面积:{self.rarea}平米,家具列表:{self.list_item}'

    def add_item(self, item):
        if self.rarea >= item.area:
            self.list_item.append(item.name)
            print(f'房子里添加了{item.name},剩余面积减少了')
            self.rarea -= item.area
        else:
            print("家里空间不够了,放不下了")

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

    def __str__(self):
        return f'名字:{self.name},占地面积:{self.area}平米'


bad = HouseItem('席梦思', 4)
# print(bad)
chest = HouseItem('衣柜', 2)
# print(chest)
table = HouseItem('餐桌', 1.5)
# print(table)

home = House('四叶草户型', 7)

home.add_item(bad)
print(home)
home.add_item(chest)
print(home)
home.add_item(table)
print(home)

输出结果:
在这里插入图片描述

1.3 代码解释

这段代码定义了两个类:HouseHouseItem。它们分别用来表示房子和家具

1.3.1 类 HouseItem

  • 属性:
    • name: 家具的名字
    • area: 家具占用的面积
  • 方法:
    • __init__(self, name, area): 构造函数,用于初始化一个新的 HouseItem 对象
    • __str__(self): 返回一个描述该对象的字符串

1.3.2 类 House

  • 属性:
    • htype: 房子的户型
    • tarea: 房子的总面积
    • rarea: 房子剩余可使用的面积,初始时等于总面积
    • list_item: 存储已添加到房子里的家具名字列表
  • 方法:
    • __init__(self, htype, tarea): 构造函数,用于初始化一个新的 House 对象
    • __str__(self): 返回一个描述该房子状态的字符串,包括户型、总面积、剩余面积以及家具列表
    • add_item(self, item): 尝试将给定的 HouseItem 添加到房子中。如果房子有足够的空间(即 rarea 大于或等于 item.area),则更新 rarea 并将家具名称添加到 list_item 中;否则,打印出空间不足的消息

1.3.3 实例化与调用

  • 创建了三个 HouseItem 对象:bad (席梦思),chest (衣柜),table (餐桌)
  • 创建了一个 House 对象 home,其户型为“四叶草户型”,总面积为 7 平米
  • 使用 home.add_item() 方法尝试向 home 添加家具,并在每次添加后打印当前的房子状态

1.3.4 运行结果

  • 当第一次尝试添加 bad (席梦思) 时,由于它的面积是 4 平米,小于 home 的剩余面积 7 平米,所以可以成功添加。这时,home 的剩余面积减少到 3 平米
  • 接着添加 chest (衣柜),面积为 2 平米,仍然小于 home 的剩余面积 3 平米,因此也可以成功添加。此时,home 的剩余面积变为 1 平米
  • 最后尝试添加 table (餐桌),面积为 1.5 平米,但是 home 的剩余面积只有 1 平米,不足以容纳这张餐桌,因此会输出“家里空间不够了,放不下了”

通过这个简单的程序,我们可以看到如何使用面向对象的方法来模拟现实世界中的情况,比如管理房屋内的家具布局

四、思考

  • House和HouseItem类有各自的属性和方法
  • House类需要HouseItem类中的数据,就需要在House中初始化一个空列表
  • 添加家具方法add_item首先要判断能否添置家具,其次对家具列表、剩余面积进行更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2201351.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于IDEA+SpringBoot+Vue+Uniapp的投票评选小程序系统的详细设计和实现

2. 详细视频演示 文章底部名片,联系我获取更详细的演示视频 3. 论文参考 4. 项目运行截图 代码运行效果图 代码运行效果图 代码运行效果图 代码运行效果图 代码运行效果图 5. 技术框架 5.1 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框…

令牌桶算法自学笔记

令牌桶算法可以处理大流浪场景。 令牌以恒定的速率向一个令牌通中放入令牌,每一个请求必须要从桶中拿到令牌,才可以完成后续处理请求的操作。如果一个请求没有拿到令牌,那么就解决请求。 可以处理固定桶数量的请求,当请求数量超…

【hot100-java】二叉树展开为链表

二叉树篇。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

进阶功法:SQL 优化指南

目录标题 SQL 优化指南1. 插入数据优化1.1 批量插入数据1.2 手动提交事务1.3 主键顺序插入1.4 大批量插入数据步骤: 2. 主键优化主键设计原则拓展知识 3. ORDER BY 优化3.1 Using filesort3.2 Using index示例 3.3 ORDER BY 优化原则 4. GROUP BY 优化示例 4.1 GROU…

社工字典生成工具 —— CeWL 使用手册

GitHub - digininja/CeWL: CeWL is a Custom Word List GeneratorCeWL is a Custom Word List Generator. Contribute to digininja/CeWL development by creating an account on GitHub.https://github.com/digininja/CeWL/ 0x01:CeWL 简介 CeWL(Cust…

[YM]模板-归并排序

概念: 归并排序,其实是一种分治和递归算法 将大问题转化为一个个小问题处理,最终整合成一个大问题 模板: const int N 2e5 5; int a[N],b[N],n;void mergeSort(int l, int r){if(l>r) return;int mid(lr)>>1; merge…

Vue 响应式的本质

在 Vue 开发中,最容易出问题的地方往往是对 Vue 响应式系统的误解。 响应式的核心不在于“数据一变,页面就刷新”,这是表象。真正的本质是数据和函数的关联。 当数据与函数关联后,数据的变化会触发相应函数的重新运行。这里要明…

【深度学习基础模型】玻尔兹曼机BM|受限玻尔兹曼机RBM|深度置信网络DBN详细理解并附实现代码。

【深度学习基础模型】玻尔兹曼机Boltzmann machines (BM)|受限玻尔兹曼机Restricted Boltzmann machines (RBM)|深度置信网络Deep belief networks (DBN)详细理解并附实现代码。 【深度学习基础模型】玻尔兹曼机Boltzmann machines (BM)|受限玻尔兹曼机Restricted Boltzmann m…

65 切面AOP

65 切面AOP 切面基础概念 AOP:Aspect Oriented Programming,面向切面编程。是通过预编译方式(aspectj)或者运行期动态代理(Spring)实现程序功能的统一维护的技术。 面试问题: Spring的两大核心…

上市公司企业平台生态嵌入数据(2001-2023年)

一、资料名称:2023-2001年上市公司企业平台生态嵌入数据 二、测算方式:参考C刊《管理学刊》陈南旭(2024)老师的做法,从上市公司年报中爬取“平台生态嵌入”的有关词频来衡量其嵌入程度具有可行性与科学性。 为更好地…

dfs +剪枝sudoku———poj2676

目录 前言 lowbit函数 数独 suduku 问题描述 输入 输出 问题分析 子网格位置 优化搜索顺序剪枝1 优化搜索顺序剪枝2 可行性剪枝 代码 前言 lowbit函数 这是一个利用二进制位运算取出二进制数最后一位’1‘的函数 数独 数独大家肯定都玩过,…

26届日常实习 momenta一面(牛客)

26届日常实习 momenta一面 八股问答sql 40min java的集合:list map set底层数据结构,特性,线程安全 get post区别 mysql跟redis以外你还知道哪些数据库:回答了大二参加大数据竞赛用的hive hbase 你觉得hbase链式存储的优势是什么…

与鸿蒙同行,Java Solon v3.0 正式发布(向下兼容)

与 HarmonyOS NEXT 10月8日公测同行。Solon (开放原子开源基金会,孵化项目) v3.0 正式发布, 且将在 2025 年启动华为编程语言 “仓颉” 版开发(届时会有 Solon-Java 和 Solon-CJ 两大版本)。本次大版本更新…

离散数学概述

离散数学概述 离散数学(Discrete Mathematics)是计算机科学、信息科学、数学等领域的基础学科之一。与连续数学(如微积分)不同,离散数学主要研究离散对象,如整数、图、逻辑公式等。在大学的课程中&#xf…

大学的离散数学:探索数学的逻辑之美

大学的离散数学:探索数学的逻辑之美 离散数学,作为数学的一个分支,它研究的是离散而非连续的对象。在大学课程中,离散数学是计算机科学、信息科学、电子工程等专业的重要基础课程。它不仅为学生提供了必要的数学工具,…

qt打包程序后运行提示缺少dll文件(使用官方打包程序)

qt打包程序后运行提示缺少dll文件(使用官方打包程序) 当使用Qt完成程序打包后,把程序生成的文件全部复制到另外的一台没有Qt开发环境的电脑上,双击运行.exe可执行程序,提示缺少一系列的.dll程序。 提示找不到 libstdc-6.dll libwinpthread-1…

算法.图论-bfs及其拓展

文章目录 广度优先搜索简介经典bfs习题地图分析贴纸拼词 01bfs解析基本过程相关习题 广度优先搜索简介 bfs的特点是逐层扩散, 从源头到目标点扩散了几层, 最短路就是多少 bfs的使用特征是任意两个节点的距离(权值)是相同的(无向图, 矩阵天然满足这一特点) bfs开始的时候可以是…

高性能缓存方案 —— Caffeine

一、简介 Caffeine是一个高性能的Java缓存库,它提供了本地缓存的功能。 Caffeine和Redis都是内存级别的缓存,为什么要使用在这两缓存作为二级缓存,它们两有什么区别呢? 虽然它们都是内存级别的缓存,但是Redis是需要单独部署的&…

DAY42WEB 攻防-PHP 应用MYSQL 架构SQL 注入跨库查询文件读写权限操作

一、PHP-MYSQL-SQL注入-常规查询 1.PHP-MYSQL-Web组成架构 MySQL(统一管理) ​ root(自带默认) ​ 网站A testA ​ 网站B testB MySQL(一对一管理) ​ testA用户 ​ 网站A testA ​ testB用户 ​ 网站B testB access无数据库用户 mysql里面有内置的管理…

使用 Stata 调用本地部署的大语言模型进行文本主要内容提取——历年政府工作报告中的经济增长目标提取

因此今天给大家分享一个新的方法。也就是通过部署在本地的大模型进行文本内容提取。 安装 Ollama 通过 Ollama 可以快速在本地部署一些常用的大模型。可以根据自己的系统从这里安装下载:https://github.com/ollama/ollama MacOS 下载 Ollama 链接: https://ollama…