《Python编程基础》课件-5.2.3继承高阶_第1页
《Python编程基础》课件-5.2.3继承高阶_第2页
《Python编程基础》课件-5.2.3继承高阶_第3页
《Python编程基础》课件-5.2.3继承高阶_第4页
《Python编程基础》课件-5.2.3继承高阶_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

继承高阶教学目标1.了解抽象基类(ABC)的定义2.掌握Mixins与多继承的应用和特性3.了解继承中的私有成员和访问规则4.掌握元类在继承中的使用和影响5.了解继承的常见陷阱抽象基类定义接口,强制子类实现方法核心概念:使用abc模块,@abstractmethod装饰。继承ABC确保实现。1、抽象基类(ABC)fromabcimportABC,abstractmethodclassShape(ABC):@abstractmethoddefarea(self):passclassTriangle(Shape):defarea(self):return0.5*base*heightMixins是小型类,提供特定功能,通过多继承混合。核心概念:Mixins无状态,专注于方法。2.Mixins与多继承

classLogMixin:deflog(self):print("Logging")classMyClass(LogMixin,Base):pass私有成员(__prefix)在继承中通过名称改写隔离。核心概念:子类不可直接访问,但可通过getter。维护封装。3.继承中的私有成员classAnimal:def__init__(self):self.__secret="hidden"classCow(Animal):defreveal(self): print(self._Animal__secret)#访问元类控制类创建,影响继承行为。核心概念:type是默认元类,自定义元类可修改继承。高级主题,用于框架。4.元类与继承

classMeta(type):def__new__(cls,name,bases,dct):returnsuper().__new__(cls,name,bases,dct)classMyClass(metaclass=Meta):pass最佳实践:偏好组合而非继承,避免深层次;陷阱:循环继承、过度覆盖。核心概念:使用Liskov替换原则确保兼容。5.继承最佳实践与陷阱#避免:classA(B):pass;classB(A):pass#循环C3算法计算MRO,确保一致线性顺序。在Python中,处理复杂继承。核心概念:C3合并列表保顺序。6.C3线性化算法classO:passclassA(O):passclassB(O):passclassC(A,B):pass#C3计算MRO:C,A,B,Oprint(C.__mro__)#输出序列弱引用不增计数,用于继承避免循环。在Python中,weakref.ref在子类中。核心概念:弱引用允许GC回收。7.弱引用在继承中importweakref#导入classParent:passclassChild(Parent):def__init__(self,p):self.p=weakref.ref(p)p=Parent()#父c=Child(p)#子弱引用小结1.抽象基类(ABC)通过abc模块和@abstractmethod装饰器定义接口,确保子类实现特定方法2.Mixins是无状态的小型类,通过多继承提供特定功能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论