文章总结: 文章深入解析Python面向对象编程中的多态,指出其是语言机制自然支持的结果。通过对比无多态代码的强耦合问题,阐明多态旨在让调用方只关心对象行为而非类型。结合狗猫类与日志记录器示例,重点阐述了鸭子类型这一核心思想,强调Python多态是行为驱动的。 综合评分: 92 文章分类: 其他
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)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论