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

结合python面向对象编程,阐述面向对象三大特征

在 Python 中,面向对象编程(OOP)的三大特征——封装、继承、多态——同样适用,但实现方式与其他语言(如 Java)有所不同。下面结合 Python 代码详细说明:


1. ​封装(Encapsulation)​

核心思想

将数据(属性)和操作数据的方法(行为)捆绑在类中,并控制外部访问权限。

Python 的实现

  • Python 没有严格的 private 或 protected 关键字,但通过命名约定实现封装:
    • ​**单下划线 _var**​:约定为“受保护”成员(实际仍可访问)。
    • ​**双下划线 __var**​:触发名称修饰(Name Mangling),避免直接访问。
  • 通过 property 装饰器提供对属性的安全访问。

示例代码

class BankAccount:def __init__(self, balance):self.__balance = balance  # 私有属性(双下划线)# 通过方法暴露私有属性(封装)def get_balance(self):return self.__balancedef deposit(self, amount):if amount > 0:self.__balance += amount# 使用
account = BankAccount(1000)
print(account.get_balance())  # 正确访问
# print(account.__balance)    # 报错:AttributeError

说明

  • Python 的封装更依赖约定而非强制,开发者需自觉遵守访问规则。

2. ​继承(Inheritance)​

核心思想

子类继承父类的属性和方法,并可扩展或重写功能。

Python 的特点

  • 支持单继承多继承​(一个子类可继承多个父类)。
  • 通过 super() 调用父类方法。
  • 所有类默认继承 object(Python 3 中可省略)。

示例代码

class Animal:def __init__(self, name):self.name = namedef speak(self):return "Unknown sound"class Dog(Animal):  # 继承Animaldef speak(self):  # 重写父类方法return "Woof!"class Cat(Animal):def speak(self):return "Meow!"# 使用
dog = Dog("Buddy")
print(dog.name)      # 继承父类属性
print(dog.speak())   # 输出 "Woof!"(子类重写)

多继承示例

class A:def method(self):return "A"class B:def method(self):return "B"class C(A, B):  # 多继承(从左到右优先)passc = C()
print(c.method())  # 输出 "A"(A的优先级高于B)

3. ​多态(Polymorphism)​

核心思想

同一接口对不同对象产生不同行为。

Python 的实现

  • Python 是动态类型语言,多态通过鸭子类型​(Duck Typing)实现:
    • 不依赖继承关系,只要对象有相同方法名即可。
  • 结合继承时,子类重写父类方法实现多态。

示例代码

(1)基于继承的多态
class Animal:def speak(self):raise NotImplementedError("子类必须实现此方法")class Dog(Animal):def speak(self):return "Woof!"class Cat(Animal):def speak(self):return "Meow!"def animal_sound(animal: Animal):print(animal.speak())# 使用
animal_sound(Dog())  # 输出 "Woof!"
animal_sound(Cat())  # 输出 "Meow!"
(2)鸭子类型(无需继承)
class Car:def sound(self):return "Vroom!"class Robot:def sound(self):return "Beep!"def make_sound(obj):  # 不关心类型,只要实现sound()print(obj.sound())# 使用
make_sound(Car())    # 输出 "Vroom!"
make_sound(Robot())  # 输出 "Beep!"

总结表:Python 中的三大特征

特征Python 实现方式关键语法
封装命名约定(_var__var)+ propertyself.__balance
继承单继承/多继承 + super()class Child(Parent1, Parent2)
多态鸭子类型 + 方法重写同名方法在不同类中实现不同行为

Python 面向对象的独特之处

  1. 动态性​:属性和方法可在运行时动态添加。
  2. 鸭子类型​:多态不依赖继承,而是“只要像鸭子,就是鸭子”。
  3. 混入(Mixin)​​:通过多继承实现代码复用(如 class LoggableMixin)。

通过灵活运用这三大特征,Python 的面向对象编程既能保持简洁,又能实现高度可扩展的设计。

http://www.lryc.cn/news/593017.html

相关文章:

  • 软件设计师之开发模型
  • HTML5中的自定义属性
  • 从Prompt到结构建模:如何以数据驱动重构日本语言学校体系?以国际日本语学院为例
  • World of Warcraft [CLASSIC] The Ruby Sanctum [RS] Halion
  • 在 .NET Core 中创建 Web Socket API
  • Kotlin泛型约束
  • NLP中情感分析与观念分析、价值判断、意图识别的区别与联系,以及四者在实际应用中的协同
  • RabbitMQ—事务与消息分发
  • espidf启用vTaskList方法
  • 使用MATLAB探索圆周率π的奇妙计算之旅
  • day25 力扣90.子集II 力扣46.全排列 力扣47.全排列 II
  • bws-rs:Rust 编写的 S3 协议网关框架,支持灵活后端接入
  • VBA 运用LISTBOX插件,选择多个选项,并将选中的选项回车录入当前选中的单元格
  • 关于NUC+雷达+倍福组网交换机是否完全足够的问题(是否需要一个路由器)
  • 软考 系统架构设计师系列知识点之杂项集萃(113)
  • WPF为启动界面(Splash Screen)添加背景音乐
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - snowNLP库实现中文情感分析
  • 标准文件和系统文件I/O
  • 车载刷写框架 --- 关于私有节点刷写失败未报引起的反思
  • 《命令行参数与环境变量:从使用到原理的全方位解析》
  • 移除debian升级后没用的垃圾
  • laravel RedisException: Connection refused优雅草PMS项目管理系统报错解决-以及Redis 详细指南-优雅草卓伊凡
  • 2025第15届上海国际生物发酵展:聚焦合成生物与绿色制造,共启生物经济新时代
  • Rust Web 全栈开发(十):编写服务器端 Web 应用
  • 医疗AI与融合数据库的整合:挑战、架构与未来展望(下)
  • 【C# in .NET】19. 探秘抽象类:具体实现与抽象契约的桥梁
  • xss的利用
  • CS231n-2017 Lecture2图像分类笔记
  • Kafka深度解析:架构、原理与应用实践
  • [论文阅读] 人工智能 + 软件工程 | 强化学习在软件工程中的全景扫描:从应用到未来