文章目录

  • 面向对象封装案例
    • 目标
      • 1. 封装
    • 2. 小明爱跑步
      • 2.1 小明爱跑步扩展 —— 小美也爱跑步
    • 3. 摆放家具
      • 3.1 创建家具
      • 3.2 创建房间
      • 3.3 添加家具
      • 3.4 小结

面向对象封装案例

目标

  • 封装
  • 小明爱跑步
  • 存放家具

1. 封装

  1. 封装 是面向对象编程的一大特点
  2. 面向对象编程的 第一步 —— 将 属性方法 封装 到一个抽象的
  3. 外界 使用 创建 对象,然后 让对象调用方法
  4. 对象方法的细节 都被 封装类的内部

2. 小明爱跑步

需求

  1. 小明 体重 75.0 公斤
  2. 小明每次 跑步 会减肥 0.5 公斤
  3. 小明每次 吃东西 体重增加 1 公斤

提示:在 对象的方法内部,是可以 直接访问对象的属性 的!

  • 代码实现:
class Person:"""人类"""def __init__(self, name, weight):self.name = nameself.weight = weightdef __str__(self):return "我的名字叫 %s 体重 %.2f 公斤" % (self.name, self.weight)def run(self):"""跑步"""print("%s 爱跑步,跑步锻炼身体" % self.name)self.weight -= 0.5def eat(self):"""吃东西"""print("%s 是吃货,吃完这顿再减肥" % self.name)self.weight += 1xiaoming = Person("小明", 75)xiaoming.run()
xiaoming.eat()
xiaoming.eat()print(xiaoming)

2.1 小明爱跑步扩展 —— 小美也爱跑步

需求

  1. 小明小美 都爱跑步
  2. 小明 体重 75.0 公斤
  3. 小美 体重 45.0 公斤
  4. 每次 跑步 都会减少 0.5 公斤
  5. 每次 吃东西 都会增加 1 公斤

提示

  1. 对象的方法内部,是可以 直接访问对象的属性
  2. 同一个类 创建的 多个对象 之间,属性 互不干扰!

3. 摆放家具

需求

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

    • 新房子没有任何的家具
  2. 家具(HouseItem)名字占地面积,其中
    • 席梦思(bed) 占地 4 平米
    • 衣柜(chest) 占地 2 平米
    • 餐桌(table) 占地 1.5 平米
  3. 将以上三件 家具 添加房子
  4. 打印房子时,要求输出:户型总面积剩余面积家具名称列表

剩余面积

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

思考:应该先开发哪一个类?

答案 —— 家具类

  1. 家具简单
  2. 房子要使用到家具,被使用的类,通常应该先开发

3.1 创建家具

class HouseItem:def __init__(self, name, area):""":param name: 家具名称:param area: 占地面积"""self.name = nameself.area = areadef __str__(self):return "[%s] 占地面积 %.2f" % (self.name, self.area)# 1. 创建家具
bed = HouseItem("席梦思", 4)
chest = HouseItem("衣柜", 2)
table = HouseItem("餐桌", 1.5)print(bed)
print(chest)
print(table)

小结

  1. 创建了一个 家具类,使用到 __init____str__ 两个内置方法
  2. 使用 家具类 创建了 三个家具对象,并且 输出家具信息

3.2 创建房间

class House:def __init__(self, house_type, area):""":param house_type: 户型:param area: 总面积"""self.house_type = house_typeself.area = area# 剩余面积默认和总面积一致self.free_area = area# 默认没有任何的家具self.item_list = []def __str__(self):# Python 能够自动的将一对括号内部的代码连接在一起return ("户型:%s\n总面积:%.2f[剩余:%.2f]\n家具:%s"% (self.house_type, self.area,self.free_area, self.item_list))def add_item(self, item):print("要添加 %s" % item)...# 2. 创建房子对象
my_home = House("两室一厅", 60)my_home.add_item(bed)
my_home.add_item(chest)
my_home.add_item(table)print(my_home)

小结

  1. 创建了一个 房子类,使用到 __init____str__ 两个内置方法
  2. 准备了一个 add_item 方法 准备添加家具
  3. 使用 房子类 创建了 一个房子对象
  4. 房子对象 调用了三次 add_item 方法,将 三件家具 以实参传递到 add_item 内部

3.3 添加家具

需求

  • 1> 判断 家具的面积 是否 超过剩余面积如果超过,提示不能添加这件家具
  • 2> 将 家具的名称 追加到 家具名称列表
  • 3> 用 房子的剩余面积 - 家具面积
    def add_item(self, item):print("要添加 %s" % item)# 1. 判断家具面积是否大于剩余面积if item.area > self.free_area:print("%s 的面积太大,不能添加到房子中" % item.name)return# 2. 将家具的名称追加到名称列表中self.item_list.append(item.name)# 3. 计算剩余面积self.free_area -= item.area

3.4 小结

  • 主程序只负责创建 房子 对象和 家具 对象
  • 房子 对象调用 add_item 方法 将家具添加到房子
  • 面积计算剩余面积家具列表 等处理都被 封装房子类的内部

Python中面向对象封装案例——小明爱跑步、摆放家具相关推荐

  1. Python_封装案例(小明爱跑步)

    1.封装的特性和需求分析 封装是面向对象编程的一大特性, 我们在使用面向对象开发程序的时候, 第一步就应该现在需求分析, 然后根据明确的职责把不同的属性和方法封装到一个又一个抽象的类中, 之所以说是抽 ...

  2. python入门笔记——面向对象基础1_5(小明爱跑步案例)

    案例: 小明爱跑步:实际项目需求如下 ①小明体重 75.0 公斤 ②小明每次跑步 会减少0.5公斤 ③小明每次吃东西 会增加 1公斤 1.案例分析: 名字提炼法,小明--人类: 属性--体重 动词提炼 ...

  3. Python之 面向对象封装案例

    面向对象封装案例 目标 封装 小明爱跑步 存放家具 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 -- 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 ...

  4. 「Python」面向对象封装案例3——士兵突击(需求分析、代码演练)

    分装: 封装是面向对象编程的一大特点 面向对象编程的第一步:将属性和方法分装到一个抽象的类中 外界使用类创建对象,然后让对象调用方法 对象方法的细节都被封装在累的内部 注意:一个对象的属性可以是另外一 ...

  5. python小明爱跑步

    class Person:def __init__(self, name, weight):self.name = nameself.weight = weightdef __str__(self): ...

  6. 小明爱跑步-扩展-多个对象属性之间互不干扰

    class Person:def __init__(self, name, weight):# self.属性 = 形参self.name = nameself.weight = weightdef ...

  7. 21python_面向对象封装案例

    面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 -- 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对 ...

  8. 23_Python基础_面向对象封装案例(一)

    目录 1.  封装 2. 实例一-----小明爱跑步 2.1 需求 2.2 分析 2.3 代码编写 3. 实例二-小明和小美都爱跑步 3.1 需求 3.2 代码编写 4.  摆放家具 4.1 需求 4 ...

  9. python面向对象_05(面向对象封装案例 II)

    面向对象封装案例 II 目标 士兵突击案例 身份运算符 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 -- 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象, ...

最新文章

  1. 腾讯音乐招 iOS 开发, base 深圳,要求:本科、三年、OC,懂音视频开发优先。...
  2. 一个简单的Java范例
  3. ubuntu安装protobuf
  4. linux 下安装 php 扩展 典型安装 mysql curl mb_string
  5. SAP ABAP系统更改主机名
  6. python2.x和3.x的区别 print_Python2.x和Python3.x的区别
  7. python分支语句_Python中分支语句与循环语句实例详解
  8. HTTPS|SSL笔记-SSL双向认证成功握手过程(含wireshark分析)
  9. pdf如何解除加密?
  10. Leetcode130. 被围绕的区域(深搜)
  11. CST,CET,UTC,GMT,DST,Unix时间戳几种常见时间概述与关系(转)
  12. 核心微生物分析_中国白酒发酵过程中的核心微生物群及其与环境因子的关系
  13. 鼠标移动让图片倾斜45度
  14. linux编译firefox,linux安装firefox
  15. PCIe及PCB设计要求
  16. 加密的pdf文件如何解密?
  17. 开源项目——小Q聊天机器人V1.1
  18. 小知识:随机生成26个字母中(一个或多个)的字母
  19. 第十届蓝桥杯真题题解
  20. Cesium地下管线信息系统(视频)

热门文章

  1. Typora+图床详解(小白都能学得会)
  2. php 腾讯云 文字识别_讯飞语音转文字,图片转文字,效率高还免费
  3. 微信小程序部分安卓机型无法保存图片的问题解决办法
  4. virtual box和centos问题杂记(一)
  5. python入门——热量转换 I
  6. 2023年安徽省职业院校技能大赛“网络空间安全” 比赛任务书
  7. 实用 Windows 软件系列分享(七)
  8. 8000字34张图史诗级介绍同轴电缆、双绞线、光纤等线缆,超级详细!
  9. 详谈硬盘分区表格式MBR与GUID/GPT
  10. 这是什么代码帮我看看