当前位置: 首页 > 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.dtcms.com/a/287611.html

相关文章:

  • volka 可理解性输入:做家务
  • 学习C++、QT---29(QT库中QT事件的介绍和用了几个案例来对事件怎么使用的讲解)
  • lvs原理及实战部署
  • Linux内核设计与实现 - 第5章 系统调用
  • CS231n-2017 Lecture3线性分类器笔记
  • 什么是 Git 的钩子 Hooks?包括哪些内容?
  • picoCTF 2024: [[NoSQL]] Injection - Writeup
  • K8s与Helm实战:从入门到精通
  • 【杂谈】硬件工程师怎么用好AI工具做失效分析
  • 图像缩放的双线性插值算法
  • Keepalived 监听服务切换与运维指南
  • Redis常见线上问题
  • 如何实现电脑自动关机与定时任务管理
  • MySQL 深度性能优化配置实战指南
  • UGUI 性能优化系列:第三篇——渲染与像素填充率优化
  • Redis性能测试全攻略:工具实操与性能优化指南
  • python conda 包管理工具 隔离环境
  • Ubuntu 22.04.3 LTS 安装 MySQL
  • 【数据结构初阶】--双向链表(二)
  • 基于单片机病床呼叫系统/床位呼叫系统
  • 【自用】JavaSE--集合框架(一)--斗地主案例
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现动物分类(C#源码,UI界面版)
  • Python 常见库分类介绍及安装方法
  • 数据库第四次作业
  • 爬虫小知识三:selenium库
  • ElasticSearch:商品SKU+SPU实现join查询,设计及优化
  • 基于Eureka和restTemple的负载均衡
  • gitlab私有化部署
  • 月舟科技近调记录
  • Kotlin内联函数