![]()
写Python的人迟早会遇到这个场景:你刚封装好一个类,第二天需求变了,要加个"企业版用户"。复制粘贴一时爽,维护起来火葬场——三个版本迭代后,你已经分不清哪个文件才是"最新版"。
Guido van Rossum在设计Python时,从C++那里借来了继承(Inheritance),却偷偷改了规则。「Python的继承是鸭子类型的——只要会走会叫,我就认你是鸭子。」这句后来被写进官方文档的比喻,让无数Java程序员当场破防。
1991年Python 0.9发布时,继承语法已经定型:子类括号里填父类名,方法想改就改。但坑也随之而来——2008年Python 3.0强制引入新式类(object),老代码里的经典类直接失效。Stack Overflow上关于"super()怎么用"的提问,至今每月新增300+条。
现在回头看,Python的继承像一把没锁的瑞士军刀:能开箱即用,也能割伤自己。去年PSF的开发者调查显示,67%的Python项目仍在混用继承和组合,尽管官方文档第9章明确写着"优先选组合"。
一个冷知识:Python的多重继承采用C3线性化算法,这个名字来自1996年一篇论文的三位作者首字母。当年为了搞定菱形继承问题,Guido团队花了整整两个版本才实现稳定。如今你写class MyClass(A, B):时,解释器背后跑的仍是那套30年前的逻辑。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.