当前位置: 首页 > ai >正文

用生活例子通俗理解 Python OOP 四大特性

让我们用最生活化的方式,结合Python代码,来理解面向对象编程的四大特性。

1. 封装:像使用自动售货机

生活比喻

  • 你只需要投币、按按钮,就能拿到饮料

  • 不需要知道机器内部如何计算找零、如何运送饮料

  • 如果直接打开机器改数据(比如直接拿钱),会出大问题

Python代码

class VendingMachine:def __init__(self):self.__money = 0  # 私有变量,双下划线def insert_coin(self, amount):if amount > 0:self.__money += amountdef get_drink(self, button):if self.__money >= 5:  # 假设饮料5元self.__money -= 5return f"取出{button}号饮料"return "余额不足"# 使用
machine = VendingMachine()
machine.insert_coin(10)
print(machine.get_drink(3))  # 正确用法
# print(machine.__money)  # 报错!不能直接访问私有变量

通俗理解:封装就是把东西"装起来",只给你几个按钮用,保护内部数据安全。

2. 继承:像生物遗传

生活比喻

  • 父母会遗传给孩子眼睛颜色、身高等特征

  • 孩子继承了父母的特征,还可以有自己的特长

  • "龙生龙,凤生凤,老鼠的儿子会打洞"

Python代码

class Animal:def __init__(self, name):self.name = namedef eat(self):print(f"{self.name}在吃东西")class Cat(Animal):  # 继承Animal类def meow(self):  # 子类特有方法print("喵喵叫")# 使用
kitty = Cat("小花")
kitty.eat()  # 继承的方法
kitty.meow()  # 自己的方法

通俗理解:继承就是"孩子随爸妈",自动获得父母的能力,还能发展自己的特色。

3. 多态:像USB接口

生活比喻

  • 电脑的USB接口可以插鼠标、键盘、U盘

  • 虽然设备不同,但插法都一样

  • 电脑用同样的方式与它们交互

Python代码

class Device:def plug_in(self):passclass Mouse(Device):def plug_in(self):print("鼠标已连接,可以移动光标")class Keyboard(Device):def plug_in(self):print("键盘已连接,可以输入文字")# 使用
devices = [Mouse(), Keyboard()]
for device in devices:device.plug_in()  # 同一个方法,不同表现

通俗理解:多态就是"一个接口,多种形态",像插座能插各种电器。

4. 抽象:像餐厅点餐

生活比喻

  • 你只需要看菜单点菜,不需要知道怎么做菜

  • 不同厨师对同一道菜可能有不同做法

  • 只要最终端上来的菜符合菜单描述就行

Python代码

from abc import ABC, abstractmethodclass Dish(ABC):  # 抽象类@abstractmethoddef prepare(self):  # 抽象方法passclass FriedRice(Dish):def prepare(self):print("大火爆炒米饭10分钟")class Soup(Dish):def prepare(self):print("小火慢炖30分钟")# 使用
dishes = [FriedRice(), Soup()]
for dish in dishes:dish.prepare()  # 知道要做菜,但不关心具体怎么做

通俗理解:抽象就是"知道要做什么,不关心怎么做",像点餐不关心厨房里的事。

四大特性总结表

特性生活比喻Python特点代码关键词
封装自动售货机__隐藏内部数据self.__var
继承生物遗传子类获得父类能力class Child(Parent):
多态USB接口同一方法不同表现方法重写
抽象餐厅菜单ABC定义规范@abstractmethod

记住这些生活例子,下次写Python类时,想想自动售货机、遗传特征、USB设备和餐厅菜单,就能自然应用这四大特性了!

 

 

 

 

 

 

 

 

http://www.xdnf.cn/news/5658.html

相关文章:

  • 大中台,小前台:企业数字化转型的核心引擎
  • 多样本整合Banksy空间聚类分析(Visium HD, Xenium, CosMx)
  • Vector ASAP2
  • 智能网联汽车“内外协同、虚实共生”的通信生态
  • 理解多智能体深度确定性策略梯度MADDPG算法:基于python从零实现
  • TestNG接口自动化
  • Clion远程开发git触发“No such device or address”的解决方案
  • C++ 的 VS 项目中引入跨平台包管理工具 conan
  • IDEA 插件推荐:提升编程效率
  • P1874 快速求和
  • 笔记本电脑升级实战手册[3]:扩展内存与硬盘
  • Matlab 234-锂电池充放电仿真
  • 在 .NET 8 开发的WinForms 程序中展示程序版本号的几种方式
  • 运行Spark程序-在Idea中(二)
  • 汽车紧固件涂层18问:看敦普无铬锌铝涂料如何为螺丝防锈防腐
  • 多重背包、分组背包、混合背包和多维背包
  • 交易所开发-如何开发一个交易所
  • 【C语言】宏经典练习题,交换奇偶位
  • 直播:怎样用Agentic AI搭建企业AI应用?5.24日,拆解新一代“智能客服系统”案例
  • GitDiagram - GitHub 仓库可视化工具
  • 神经网络初步学习——感知机
  • EnumUtils:你的枚举“变形金刚“——让枚举操作不再手工作业
  • 第六章 Java基础-方法
  • 基于STM32、HAL库的BMP388 气压传感器 驱动程序设计
  • HTTP方法和状态码(Status Code)
  • 在Linux中安装JDK并且搭建Java环境
  • 数据处理专题(十三)
  • 讲讲git 和svn
  • HTML5 定位详解:相对定位、绝对定位和固定定位
  • 155.最小栈