分享好友 最新动态首页 最新动态分类 切换频道
web高阶课堂笔记1(深入类和对象)
2024-12-25 17:59

魔法函数总览

str 和 repr 魔法方法的区别

都是打印为字符串类型。
但是str是易读 简单明了。
repr 是给开发人员看的,会显示类的类型。

web高阶课堂笔记1(深入类和对象)

多态的概念:java 和 c# 是这一类是强类型语言。使用时,比如整数1 需要声明类型 int a = 1 。

而 python崇尚鸭子类型【即弱类型语言,也可以称为动态语言】。即只需要a=1即可不需要写明类型。

在调用实例方法时不检查类型,只要方法存在,参数正确就可以调用,即【一个对象只要看起来像鸭子,走路像鸭子,就能看作鸭子。】这一类型就是鸭子类型

python中的多态:定义时的类型和运行时的类型不一样就是多态。

面向对象的三大特征
  • 封装
  • 继承
  • 多态(定义的时候不知道调用的是谁,还有运行的时候才知道调用的是谁。比如a*2,只有运行的时候在知道a代表什么
抽象基类介绍

抽象基类(abstract base class,ABC模块:抽象基类就是 类里定义了纯虚成员函数 的类。**纯虚函数只是提供了借口,并没有具体实现。**抽象基类不能被实例化(不能创建对象,通常是作为基类供子类继承,子类中重写虚函数,实现具体的接口。

抽象基类就是 定义各种方法而不做具体实现的类 ,任何继承抽象基类的类必须实现这些方法,否则无法实例化。

抽象基类应用场景
 
 

先从collections模块【很多数据类型都封装在该模块中】的abc类型中,导入sized类型。

 
 
 

·我们需要强制某个子类必须实现父类的方法

1、直接在父类方法中编写主动抛出异常。

2、使用抽象基类方法完成
导入abc模块,再定义一个类。
首先,使用抽象基类的时候,父类不再是继承object 而是导入abc模块后,继承abc.ABCMeta

抽象基类特点
  • 无法实例化
  • 继承类必须具有抽象基类指定方法
抽象基类应用场景
  • 检查某个类是否有某种方法
  • 强制子类必须实现某些方法

isinstance(对象,判断类型【可以是元组形式填写多个】:判断数据类型,返回布尔值。

比如
a=1
b=‘耗子’
print( isinstance(a,int)或者print( isinstance(a(int,str)【元组形式中可以填写多个数据类型,进行选择判断】

小结
  • type:不考虑继承关系,返回说明类型
  • isinstance:考虑继承关系,返回布尔值
== 和 is 区别

==:值相等(id可不同
is:id相同

如图所示
cls_ins :类属性
self.a 和 send.b:实例属性
当用对象去访问,可以访问类属性和实例属性。因为对象是向上查找

单继承

当对象有该实例属性的时候,直接输出实例属性。
当对象没有该实例属性的时候,才会向上查找,使用类属性。

多继承

自省:通过一定的机制查询到对象的内部结构。

python中比较常见的自省(introspecton)机制(函数用法)有

  • dir()【对象所拥有的所有属性,考虑到继承的成员】
  • type()【数据类型返回说明类型】
  • hasattr()【判断类中是否含有某个方法,返回布尔值】
  • isinstance()【判断数据类型,返回布尔值】

通过这些函数,我们能够在程序运行时得知对象的类型,判断对象是否存在某个属性,反问对象的属性。

在多继承的情况下是根据mro顺序查询,单继承的情况下则是根据父类继承方式查询。

super:子类继承父类后在同个方法名中调用父类的方法时使用。
使用方法:super).方法名

软编码

super():函数可以替代父类名字。比如当父类曾经叫做one 如果在子类调用使用父类名的话需要one().init()。此时当父类改名为two那么子类中的调用也要将one改成two。容易造成不便,所以直接使用super替代。这样只需要修改子类继承的形参中的父类名。

硬编码

不使用super去继承父类的方法,而直接使用类名().方法名() 去调用为硬编码,注意传入的形参中self不能少,不然会报错。

它其实是一种设计模式(开发者之间的共识)。最好遵守。

继承是一个”is-a”关系。比如轿车类继承交通工具类,因为轿车是一个(“is-a”)交通工具。一个物品不可能是多种不同的东西,因此就不应该存在多重继承。不过有没有这种情况,一个类的确是需要继承多个类呢

答案是有,我们还是拿交通工具来举例子,民航飞机是一种交通工具,对于土豪们来说直升机也是一种交通工具。对于这两种交通工具,它们都有一个功能是飞行,但是轿车没有。所以,我们不可能将飞行功能写在交通工具这个父类中。但是如果民航飞机和直升机都各自写自己的飞行方法,又违背了代码尽可能重用的原则(如果以后飞行工具越来越多,那会出现许多重复代码)。

怎么办,那就只好让这两种飞机同时继承交通工具以及飞行器两个父类,这样就出现了多重继承。这时又违背了继承必须是”is-a”关系。这个难题该怎么破

这时候 Mixin 就闪亮登场了。飞行只是飞机做为交通工具的一种(增强)属性,我们可以为这个飞行的功能单独定义一个(增强)类,称之为 Mixin 类。这个类,是做为增强功能,添加到子类中的。为了让其他开发者,一看就知道这是个 Mixin 类,一般都要求开发者遵循规范,在类名末尾加上 Mixin 。

最新文章
科技革新助力事业单位考试专业备考,智启未来之选
本文目录导读:前沿科技,重塑考试体验功能亮点,引领时代潮流使用体验,畅享科技魅力激发科技爱好者兴趣,智启未来安全可靠,值得信赖立即行动,拥抱未来随着科技的飞速发展,我们为您带来了一款全新的事业单位考试专业神器,这款高科技产
皇冠最新的智能科技有哪些应用?
皇冠最新的智能科技应用丰富多样。 语音交互方面,识别与反馈速度快,能开关车窗、天窗等硬件设备,精确调整车载空调温度,控制导航、听歌、拨打电话等功能。 应用软件虽以实用为主,数量不多,像视频、游戏应用少,可下载的也有限,但支持
聚小说阅读器app
聚小说阅读器app是一款超级好用的阅读软件,是各位小说爱好者的必备神器,可以让你每天都发现许多热门小说,及时找到自己喜欢的小说类型,快速开启更加愉快的阅读之旅,可以让你们的休闲生活变得更加有趣。1.首先在本站下载聚小说阅读器app
QQ拼音输入法 6.6.6304.400
QQ拼音输入法是由腾讯公司研发的一款拼音输入法,依托腾讯公司先进的技术,打造出了一个符合大多数用户使用需求的输入法工具。QQ拼音输入法融合多种输入风格,即使是用惯了智能ABC、微软拼音和搜狗拼音的用户,也可以轻松上手。并且由于腾
软件工程专业世界大学排名? 软件工程专业硕士研究生大学排名
软件工程专业世界大学排名? 软件工程专业硕士研究生大学排名相关内容,小编在这里做了整理,希望能对大家有所帮助,关于软件工程专业世界大学排名? 软件工程专业硕士研究生大学排名信息,一起来了解一下吧!1、软件工程专业世界大学排名
SEM/SEO推广
岗位职责:1、负责学院SEM、SEO推广;2、研究各种网络营销推广和引流方式(包括搜索引擎优化、社区、头条、知乎、贴吧等),并不断创新网络推广手段;3、负责在新媒体、互联网宣传和线上活动的策划执行;5、能有效监控网络舆情,进行主动出
越养越瘦反而卖出3倍价(60元/公斤左右),他靠这条鱼盈利在60万元/亩以上!
丰都县捕捞渔民王光灿,及早未雨绸缪,提前上岸养起了瘦身鱼,一举获得成功,年纯利润超过60万元,其收入还远远超过江河捕捞;同时远离了风雨飘摇、危险艰辛的捕捞船生活,过上了安居乐业的陆地水产养殖的幸福生活,为捕捞渔民上岸转产自主
win10进入bios怎么恢复出厂设置
随着操作系统的不断发展,用户在使用Windows 10系统时,有时需要恢复出厂设置以解决系统故障或者提升系统的运行效率。本文旨在提供一个完整的方案,指导用户通过BIOS界面恢复Windows 10的出厂设置,确保用户能够在操作过程中顺利完成任务。
mysql相同的值不同的排名,如何根据不同的值对MySQL结果进行排名?
I have 2 different tables in my database by the name of: rank, settings.Here is how each table looks like with a few records in them:Table #rank:id points userid-- ----- ------1 500 12 300 23 900 34 1500 45 100 56 700 67 2
软文新闻发稿多少钱?业内价格行情大揭秘!
软文新闻发稿多少钱?业内价格行情大揭秘!软文新闻发稿多少钱?业内价格行情大揭秘!标题:软文新闻发稿多少钱?业内价格行情大揭秘!随着互联网的快速发展,软文营销逐渐成为企业宣传的重要手段。而软文新闻发稿作为其中一种有效的方式,
相关文章
推荐文章
发表评论
0评