python 学习笔记十四 继承、多态、垃圾回收、特殊方法

继承

  • 继承是面向对象的三大特性之一
  • 继承可以让一个类获取其他类的属性和方法
  • 在定义类时,可以在类名后面的括号中指定当前类的父类(也称为超类,基类,super),子类(也称为衍生类)可以直接继承父类中的所有方法和属性
    在这里插入图片描述

继承的优点

  • 继承可以让子类直接获得父类的属性和方法,避免编写重复代码,同时也符合OCP原则(开闭原则) ;
  • 创建类时省略父类,则默认父类为object,object是所有类的父类;

issubclass(a,b)

  • 判断一个类(a)是否a是另一个类(b)的子类,成立则返回True,否则返回false;
    在这里插入图片描述

方法的重写

  • 如果子类中存在与父类同名的方法,则通过子类示例调用该方法时,会调用子类的方法而不是父类的方法,称这个现象为方法的重写(覆盖,override)
  • 调用某对象的方法时,会优先去当前对象中寻找是否具有该方法,如果有则直接调用,如果没有则去父类中寻找,以此类推;
    在这里插入图片描述

super

  • 继承时父类的所有方法都会被子类继承,包括特殊方法;
    在这里插入图片描述
  • super()可以直接获得当前类的父类,
  • 当子类中某些时候需要调用父类的方法时可以直接使用super.方法名,常用的是super().__ init __(参数)
    在这里插入图片描述

多重继承

  • 在python中支持多重继承,也就是可以为一个类同时指定多个父类
  • 类名.__ bases __ (双下划线)这个属性可以获取当前类的所有直接父类
    在这里插入图片描述
  • 一个子类拥有多个父类的时候,子类会拥有所有父类的方法和属性
    在这里插入图片描述
    • 如果在多个父类中都有同名的方法,则会先在第一个父类中寻找,然后找第二个,第三个……排在前面的会覆盖后面的;

多态

  • 多态是面向对象的三大特征之一,保证了程序的灵活性
  • 违反多态性会导致适应性差,但会增加健壮性;
  • 多态就是一类事物有多种形态,如序列有多种形态:字符串,列表,元组

多态性

  • 不同的对象调用相同的函数实现不同的效果;
    在这里插入图片描述

垃圾回收

  • 在程序中没有被变量引用的对象就是垃圾
    在这里插入图片描述

垃圾回收机制

  • python中会自动回收垃圾机制,它会自动删除没有引用的对象
  • 程序结束后,对象也会被自动删除
  • 定义 __ del __()函数,观察回收过程;
    在这里插入图片描述

特殊方法

  • 特殊方法以双下划线__开头和结尾,一般不需要手动调用而是在特殊情况自动执行

__init__函数

  • 用于对象的初始化

__del__函数

  • 用于对象的删除

__new__函数

  • 用于对象的创建

__str__函数

  • 打印对象时,实际上打印的是对象中特殊方法__str__的返回值
  • str会在尝试将对象转化为字符串时调用,可以用它来指定对象转化成字符串后的结果
    直接打印对象
    在这里插入图片描述
    重写__str__函数后打印对象
    在这里插入图片描述

__repr__函数

  • __repr__在当前对象使用repr()函数时调用,其作用是指定对象在“交互模式中”直接输出的结果
    在这里插入图片描述

__lt__函数

  • __ lt __(self,other) 小于

__le__函数

  • __ le __(self,other)小于等于

__eq__函数

  • __ eq __(self,other)等于

__ne__函数

  • __ ne __(self,other)不等于

__gt__函数

  • __ gt __(self,other)大于

__ge__函数

  • __ ge __(self,other)大于等于
    在这里插入图片描述

__len__函数

  • __ len__(self)获取对象的长度

object.__bool__函数

  • object.__ bool__(self)将对象转换为bool,非空值转化为True,空值为False;
  • 可以重写该函数来指定转换为bool的结果

__add__函数

  • __ add__(self,other)将两个对象相加并返回结果;

__sub__函数

  • __ sub__(self,other)将两个对象相加并返回结果;

__mul__函数

  • __ mul__(self,other)将两个对象相乘并返回结果;

__matmul__函数

  • __ matmul__(self,other)将两个对象相除并返回结果;
发布了85 篇原创文章 · 获赞 158 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/Late_whale/article/details/104185732