首页 > 编程语言 >面试Python时必会的知识点总结

面试Python时必会的知识点总结

时间:2023-12-16 20:45:39浏览次数:43  
标签:知识点 面向对象 Python 时必会 继承 对象 父类 方法 属性

目前代码技能已经成了测试同学面试考核的刚需,对于测试开发来讲需求最大的是java和python两门语言,二者也都是面向对象语言。对于刚入门代码的同学来说面向对象相关的概念比较难于理解,而面向对象编程相关的知识点偏偏又是面试中的高频问题,所以本文我以python为例,带大家快速搞定面向对象中的核心概念并通过代码实现的方式来帮助大家对其加深理解!

对象

对象有两个层次的概念,现实生活中对象指的是可观世界的实体;而程序中对象就是一组变量和相关方法的集合,其中变量表明对象的状态,方法表明对象所具有的行为。可以将现实生活中的对象经过抽象,映射为程序中的对象,对象是对现实的高度抽象。类

对象在程序中是通过一种抽象数据类型来描述的,这种抽象数据类型即Class。类是描述对象的“基本原型”,它定义一类对象所能拥有的数据和能完成的操作。在面向对象的程序设计中,类是程序的基本单元。

类和对象的关系

对象是类的一个实例,创建一个对象就是类进行了实例化,从代码角度讲就是在内存中开辟了一块新的地址空间运行程序。一个类可以创建无数个实例(只要计算机的内存足够大),使用python代码实现如下:

dog =Animal()

即对象dog是类Animal的一个实例。

属性

存储对象的状态,可以理解为变量。

方法

实现对象的行为,可以理解为函数。

上面是面向对象理论的解释,我们以去动物园看动物为例,我们通常说去看动物,但是没有人能够看到动物这个抽象的东东,我们只能看到具体的某一种类的动物。这里的动物就是类的概念,而我们看的具体动物,例如:东北虎就是实例。关于动物的种类、颜色以及雌雄就是动物的属性,而动物具备的基础能力,例如:跑、吃、叫等等,我们则可以将其定义为方法。

面向对象三原则

面向对象三原则包括:封装、继承、多态。

封装

封装实际上是使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。我们在使用api时,如果提供方不给我们源码,我们是无法知道其内部实现的,但是这并不会妨碍我们对api的使用。简单规则如下:

xx: 公有变量或方法;
_xx:变量或方法前面加双前置下划线,无法在外部直接访问;

当执行代码时会报错:

AttributeError: 'Demo' object has no attribute '__private_func'

错误信息提示,Demo中找不到方法__private_func,原因是该方法是私有方法,不能被Demo类以外的模块或者类调用!所以大家在设计类中的方法或者属性时需要考虑好是否需要被外部调用,如果需要则设计成xx形式,如果不需要则设计成__xx形式。对于刚入门编码的小白来说,把属性和方法都设计成共有即可。

继承

继承性是面向对象程序设计语言的另一基本特征,通过继承可以实现代码的复用。继承而得到的类为子类,被继承的类为父类,所有直接或间接被继承的类都是父类。继承是子类利用父类中定义的方法和变量,就像它们属于子类自己一样。Python中支持多重继承。如下代码表示Dog类继承Animal类并通过Dog(Animal)实现,在python中object类是所有类的父类,所以Animal继承object类。

子类使用父类的run方法就像使用他自己的方法一样!

dog=Dog()

dog.run()

特征:

(1)继承关系是传递的。如果类C继承类B,类B继承类A(多继承),则类C既有从类B那里继承下来的属性与方法,也有从类A那里继承下来的属性与方法,还可以有自己新定义的属性和方法。继承来的属性和方法尽管是隐式的,但仍是类C的属性和方法。继承是在一些比较一般的类的基础上构造、建立和扩充新类的最有效的手段。

(2)继承简化了人们对事物的认识和描述,能清晰体现相关类之间的层次结构关系。

(3)继承提供了软件复用功能。如果类B继承类A,则建立类B时只需要再描述与基类(类A)不同的少量特征(数据成员和成员方法)即可。这种做法能减小代码和数据的冗余度,大大增加程序的重用性。

(4)继承通过增强一致性来减少模块间的接口和界面,大大增加了程序的易维护性。

(5)提供多重继承机制。从理论上说,一个类可以是多个一般类的特殊类,它可以从多个一般类中继承属性与方法,这便是多重继承。

 

多态

多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。类具有继承关系,并且子类类型可以向上转型看做父类类型。举一个例子大家就懂了

 

这种行为称为多态。也就是说,方法调用将作用在p_obj的实际类型上。它实际上拥有自己的 run()方法以及从Animal类继承的 run()方法,但调用 p_obj.run()总是先查找它自身的定义,如果没有定义,则顺着继承链向上查找,直到在某个父类中找到为止。

标签:知识点,面向对象,Python,时必会,继承,对象,父类,方法,属性
From: https://www.cnblogs.com/ya6998/p/17908341.html

相关文章

  • python 基础极简解释
    python基础局部与全局声明全局变量global数据存储列表变量=[数据1,数据2]变量[索引]基本:方法说明列表名.index(值)输入列表值取索引列表名[索引]=数据赋值lea(列表)统计元素列表.count(数据)统计数据出现的次数排序:方法说明列表......
  • Python中级之解压赋值
    解压赋值【一】解压赋值的概念解压赋值是指将一个可迭代对象(如列表、元组、字典的键值对等)中的元素拆分并分配给多个变量。这种技术非常方便,可以简洁地从一个数据结构中提取元素并将它们分配给多个变量。需要确保变量的数量与可迭代对象中的元素数量匹配,否则会引发ValueError......
  • Python装饰器:深入探索功能增强的神奇工具(特点+应用+举例)
    Python装饰器是一项强大的特性,它允许程序员在不改变函数或类本身的情况下,增加、扩展或修改它们的行为。从日志记录到权限验证,再到性能分析和缓存,装饰器在Python编程中发挥着重要的作用。本文将深入探讨装饰器的各个方面,从基本概念到实际应用,带您领略装饰器的神奇之处。装饰器是Pyth......
  • python高级之生成器
    生成器一、生成器与yield若函数体包含yield关键字,再调用函数,并不会执行函数体代码,得到的返回值即生成器对象defmy_range(start,stop,step=1):print('start...')whilestart<stop:yieldstartstart+=stepprint('end...')g=my_range(0,3)......
  • python爬虫
    #(2)importrequestsurl="https://www.google.cn/"foriinrange(20):try:r=requests.get(url,timeout=30)r.raise_for_status()r.encoding='utf-8'print(r.text)except:print('')......
  • Python准备之软件开发规范
    软件开发规范【一】常见的开发规范软件开发规范是一组为了保持代码质量、可维护性和协作效率而制定的约定和准则。这些规范通常由开发团队、组织或行业制定,并且在整个软件开发生命周期中都需要遵循。以下是一些常见的软件开发规范:命名规范:使用有意义的变量、函数和类名,遵循......
  • Python 潮流周刊第 31 期(摘要)
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。周刊全文:https://pythoncat.top/posts/2023-12-16-weekly以下是本期摘要:......
  • 在linux环境上安装python
    一、环境操作系统:CentOS7.964位Python版本:3.8.2二、安装包:百度网盘地址及提取码:地址:https://pan.baidu.com/s/1P1kSAm_OuAiBZEShJi1XPA 提取码:88ra三、步骤:3.1上传安装包并解压缩mkdir-p/usr/local/python3cd/usr/local/python3tar-zxvfPython-3.8.2.tgz3.......
  • 【纯手工打造】时间戳转换工具(python)
    1.背景最近发现一个事情,如果日志中的时间戳,需要我们转换成时间,增加可读性。或者将时间转换成时间戳,来配置时间。相信大多人和我一样,都是打开网页,搜索在线时间戳转换工具,然后复制粘贴进去。个人认为可以手工打造一个python版本的时间戳转换工具,来解放双手,减少打开网页的时间,于是乎......
  • Python高级之模块导入
    模块导入与包的使用【一】模块与包概要模块(Module):定义:在Python中,模块是一个包含Python代码的文件。这些文件以.py为扩展名,可以包含变量、函数和类等,文件名为xxx.py,模块名则是xxx,导入模块可以引用模块中已经写好的功能。作用:模块提供了一种组织代码的方式,将相关的功......