尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Python.三.(三)--3. 封装继承多态

Python.三.(三)--3. 封装继承多态 三、 函数、类与面向对象编程 (OOP)标题函数参数与高阶函数装饰器与闭包面向对象三大特征类、对象与魔术方法异常处理结论先行面向对象三大特征层层递进封装隐藏内部实现 →继承复用并扩展已有能力 →多态让不同对象对同一消息做出各自响应。封装是基础继承是桥梁多态是升华三者共同支撑高内聚、低耦合的设计目标。1. 封装Encapsulation核心把数据和操作数据的方法绑定在一起并对外隐藏内部实现细节。Python 通过命名约定实现访问控制注意是约定而非强制name公开外部可访问_name受保护提示内部使用外部仍可访问__name私有触发名称改写_ClassName__name增加访问难度class BankAccount: def __init__(self, balance): self.__balance balance # 私有属性 def deposit(self, amount): if amount 0: self.__balance amount def get_balance(self): return self.__balance 意义防止外部直接篡改内部状态通过方法做校验保证数据完整性。2. 继承Inheritance核心子类获得父类的属性和方法实现代码复用与扩展。class Animal: def __init__(self, name): self.name name def speak(self): pass class Dog(Animal): # 继承 Animal def speak(self): # 重写父类方法 return f{self.name}: 汪汪关键点Python 支持单继承和多继承多继承通过MRO方法解析顺序C3 线性化决定查找顺序super()调用父类方法常用于__init__中初始化父类属性子类可重写override父类方法也可扩展新增方法 意义减少重复代码建立is-a关系层次支持渐进式扩展。3. 多态Polymorphism核心不同类的对象对同一方法调用表现出不同行为。Python 的多态基于鸭子类型Duck Typing——“看起来像鸭子叫起来像鸭子那就是鸭子”。class Cat(Animal): def speak(self): return f{self.name}: 喵喵 def make_sound(animal): print(animal.speak()) # 不关心具体类型只要有 speak 方法 make_sound(Dog(旺财)) # 旺财: 汪汪 make_sound(Cat(咪咪)) # 咪咪: 喵喵 Python 多态的特点不需要显式继承也能多态鸭子类型只要方法名一致即可相比 Java/C 的接口/虚函数Python 更灵活但缺少编译期类型约束三者的联系具体关系封装是地基没有封装数据和逻辑散落各处继承无从谈起——继承的正是被封装好的属性和方法。继承是纽带它建立了类之间的层次关系为多态提供了类型基础。子类继承父类的接口约定才能被统一调用。多态是成果封装保证了接口稳定继承让子类共享接口多态则让同一调用各展所长成为可能。一句话串联封装定义边界继承传递能力多态释放灵活——三者共同构成面向对象设计的铁三角。预测结论先行多态之后面向对象思想会自然向抽象接口/协议→ 设计模式 → 组合优于继承 → 多范式融合演进核心驱动力是从单个类的灵活走向系统级的可扩展与可维护。演进预测链逐级说明抽象Abstraction多态的极致是只认接口不认实现。Python 通过abc.ABC、typing.Protocol定义契约让多态从隐式鸭子类型升级为显式接口约束。设计模式有了封装/继承/多态三件套接下来就是用它们组合出可复用的设计经验——工厂、策略、观察者、装饰器等 23 种经典模式本质都是对三大特征的工程化运用。组合优于继承⚖️继承链过深会导致强耦合和脆弱基类问题。下一步趋势是用组合 委托替代深层继承这也是 Go 语言干脆取消继承的设计哲学。多范式融合纯 OOP 难以应对所有场景现代 Python 已融合函数式高阶函数、不可变数据、装饰器/AOP切面、类型注解等走向多范式协作的复杂系统设计。一句话总结三大特征解决了单个类怎么设计下一步解决的是多个类怎么协作、整个系统怎么演进。️
返回列表