Python_封装案例

文章目录


一、封装

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

二、封装案例一:小明爱跑步

需求:

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

分析:

  1. 类名:Person
  2. 属性:姓名 name,体重 weight
  3. 方法:
    跑步 run
    吃东西 eat
    添加属性 __init__
    属性信息 __str__
python 复制代码
class Person:
    def __init__(self, name, weight):
        self.name = name
        self.weight = weight

    def __str__(self):
        return f'姓名:{self.name},体重:{self.weight}'

    def run(self):
        print(f'{self.name}跑步 5 千米,体重减少了')
        self.weight -= 0.5

    def eat(self):
        print(f'{self.name}大餐一顿,体重增加了')
        self.weight += 1

XiaoMing = Person('XiaoMing', 75.0)
print(XiaoMing)

XiaoMing.run()
print(XiaoMing)
XiaoMing.eat()
print(XiaoMing)

结果:

python 复制代码
姓名:XiaoMing,体重:75.0
XiaoMing跑步 5 千米,体重减少了
姓名:XiaoMing,体重:74.5
XiaoMing大餐一顿,体重增加了
姓名:XiaoMing,体重:75.5

三、封装案例二:摆放家具

需求:

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

剩余面积

  1. 在创建房子对象时,定义一个剩余面积的属性,初始值和总面积相等
  2. 当调用add_item方法,向房间添加家具时,让剩余面积=家具面积
  • 类名:房子类 House
  • 属性:
    户型 name,总面积 total_area
    剩余面积free_area = total_are
    家具名称列表 item_list = []
  • 方法:__init____str__
  • 添加家具方法:add_item()
    类名:家具类 HouseItem

属性:名字 name,占地面积 area

方法:__init____str__

python 复制代码
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,name,total_area):
        self.name = name
        self.total_area = total_area
        self.free_area = total_area
        self.item_list = []

    def add_item(self,item):
        '''添加家具方法'''
        '''检查剩余面积是否足够放置家具'''
        if self.free_area >= item.area:
            self.item_list.append(item.name)
            self.free_area -= item.area
            print(f'已添加{item.name},当前剩余面积{self.free_area}平米')
        else:
            print(f'剩余面积不足,无法添加{item.name}')

    def __str__(self):
        return (f'房子信息\n'
                f'户型:{self.name}\n'
                f'总面积:{self.total_area}\n'
                f'剩余面积:{self.free_area}\n'
                f'家具列表:{self.item_list}')


# 创建三件家具
bed = HouseItem('席梦思',4)
chest = HouseItem('衣柜',2)
table = HouseItem('餐桌',1.5)

# 创建房子(假设是两居室,总面积10平米)
house = House('两居室',10)

# 添加家具到房子中
house.add_item(bed)
house.add_item(chest)
house.add_item(table)

# 打印房子信息
print('\n'+house.__str__())

结果:

复制代码
已添加席梦思,当前剩余面积6平米
已添加衣柜,当前剩余面积4平米
已添加餐桌,当前剩余面积2.5平米

房子信息
户型:两居室
总面积:10
剩余面积:2.5
家具列表:['席梦思', '衣柜', '餐桌']
相关推荐
0思必得01 小时前
[Web自动化] 处理爬虫异常
运维·爬虫·python·selenium·自动化·web自动化
喵手1 小时前
Python爬虫零基础入门【第九章:实战项目教学·第17节】内容指纹去重:URL 变体/重复正文的识别!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·内容指纹去重·url变体
喵手1 小时前
Python爬虫零基础入门【第五章:数据保存与入库·第1节】先学最通用:CSV/JSONL 保存(可复现、可分享)!
爬虫·python·python爬虫实战·python爬虫工程化实战·python爬虫零基础入门·数据保存与入库·csv/jsonl
子夜江寒2 小时前
OpenCV 学习:图像拼接与答题卡识别的实现
python·opencv·学习·计算机视觉
bjxiaxueliang2 小时前
一文掌握Python Flask:HTTP微服务开发从入门到部署
python·http·flask
SunnyRivers2 小时前
Python 中的 HTTP 客户端:Requests、HTTPX 与 AIOHTTP 对比
python·httpx·requests·aiohttp·区别
u0109272713 小时前
持续集成/持续部署(CI/CD) for Python
jvm·数据库·python
lixin5565563 小时前
基于迁移学习的图像风格增强器
java·人工智能·pytorch·python·深度学习·语言模型
阡陌..3 小时前
浅谈SAR图像处理---形态学滤波
图像处理·人工智能·python
qq_229058014 小时前
python-Dgango项目收集静态文件、构建前端、安装依赖
开发语言·python