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)将两个对象相除并返回结果;

最后

可以关注一下我的公众号,最近开始写公众号,我会在上面分享一些资源和发布一些csdn上发布不了的干货
在这里插入图片描述

点个关注是对博主最大的支持

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是关于Python中封装、继承多态的面试题: 1. 什么是封装?如何实现? 封装是面向对象编程中的一种重要概念,它指的是将数据和方法包装在中,对外部世界隐藏的内部细节,从而提高了代码的安全性和可维护性。在Python中,可以通过将属性设置为私有属性,并提供公有的访问方法来实现封装。 2. 什么是继承?如何实现? 继承是面向对象编程中的一种重要机制,它指的是一个可以通过继承另一个的属性和方法来扩展自己。在Python中,可以通过在定义中指定要继承的父来实现继承。 3. 什么是多态?如何实现? 多态是面向对象编程中的一种重要特性,它指的是同一个方法可以被不同的对象调用,产生不同的结果。在Python中,可以通过方法重写和方法重载来实现多态方法重写指的是子重写父方法,从而实现不同的功能;方法重载指的是在同一个中定义多个同名方法,但参数型和个数不同,调用时编译器会根据实际参数型和个数选择调用哪个方法。 4. 在Python中如何实现接口? 在Python中,没有像Java和C#等语言中的接口概念。但是可以通过抽象基(Abstract Base Class,简称ABC)来实现似于接口的功能。ABC是Python中的一种特殊,它不能被实例化,只能被继承,子必须实现指定的抽象方法,从而保证了程序的正确性和可维护性。 以上就是关于Python中封装、继承多态的面试题,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值