Python面向对象编程——多态(Polymorphism)

admin 2026-01-26 02:19:51 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文章深入解析Python面向对象编程中的多态,指出其是语言机制自然支持的结果。通过对比无多态代码的强耦合问题,阐明多态旨在让调用方只关心对象行为而非类型。结合狗猫类与日志记录器示例,重点阐述了鸭子类型这一核心思想,强调Python多态是行为驱动的。 综合评分: 92 文章分类: 其他


cover_image

Python 面向对象编程——多态(Polymorphism)

原创

Lino Lino

网络技术联盟站

2026年1月24日 18:00 江苏

各位同学,大家好!我是你们的 Python 讲师 Lino。

在很多教材里,多态往往被讲成一句话:

“同一个接口,不同的实现。”

这句话没错,但太抽象。

在 Python 中,多态不是被强制出来的设计模式,而是语言机制自然支持的结果

多态到底解决什么问题?

先看一个“没有多态”的典型代码。


class Dog:     def bark(self):         print(“wang”)

class Cat:     def meow(self):         print(“miao”)


使用时你只能这样写:


def make_sound(obj):     if isinstance(obj, Dog):         obj.bark()     elif isinstance(obj, Cat):         obj.meow()


问题非常明显:

  • 强耦合
  • 新类型必须改旧代码
  • 完全违背扩展原则

多态的目标只有一个:

调用方不关心对象的具体类型,只关心它“能做什么”。

Python 中最基础的多态形式

Python 不需要接口关键字,也不需要强制继承。


class Dog:     def speak(self):         print(“wang”)

class Cat:     def speak(self):         print(“miao”)


统一调用:


def make_sound(animal):     animal.speak()


使用:


makesound(Dog()) makesound(Cat())


这就是多态。

Python 的多态是行为驱动,而不是类型驱动

鸭子类型:Python 多态的核心思想

那句经典的话你一定听过:

“如果它走起来像鸭子,叫起来像鸭子,那它就是鸭子。”

示例:


class FileLogger:     def write(self, msg):         print(f”file: {msg}”)

class SocketLogger:     def write(self, msg):         print(f”socket: {msg}”)


统一使用:


def log(writer):     writer.write(“hello”)



免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:网络技术联盟站 Lino Lino《Python 面向对象编程——多态(Polymorphism)》

评论:0   参与:  0