分享好友 最新动态首页 最新动态分类 切换频道
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 。

最新文章
如何让百度快速收录网站内容?
还是那句话,只要坚持,总会被青睐的。做搜索引擎推广,不可能做完马上见效的,seo是需要时间的,可能你前几天做的事情,过几天百度才会知道。1、网站内部做好。怎么做好?这个问题问的深奥啊,我怎么知道你的网站有没有做好,你的网站我又
虚拟偶像影视动画制作软件(虚拟偶像影视动画制作软件哪个好)
摘要:虚拟偶像影视动画制作软件,虚拟偶像影视动画制作软件现如今,随着科技的迅猛发展,人们对于数字化、虚拟化、智能化工具的需求日益增加。在影视动画行业,虚拟偶像已经成为了一种趋势,不少影视公司纷纷尝试推出自己的虚拟偶像,同时
漫蛙漫画官网入口最新版软件亮点
漫蛙漫画官网入口最新版下载是一款专为漫画爱好者打造的阅读软件。它汇集了丰富的漫画资源,包括各种题材和风格的作品,满足用户的多样化需求。软件界面简洁友好,操作便捷,支持离线下载,让用户随时随地畅享漫画世界。同时,漫蛙漫画还提
一款具有创新性和趣味性的 AI 换脸应用,可让用户体验到摸胸的感觉
AI 换脸技术是近年来计算机视觉和人工智能领域的热门话题,它可以将一个人的脸替换到另一个人的身上,从而实现换脸的效果。而今天我要向大家介绍的是一款具有创新性和趣味性的 AI 换脸应用,它不仅可以让用户体验到换脸的乐趣,还可以让用
【现身】传苹果将推10.8英寸OLED iPad Air;Vision Pro现身中国监管数据库;美格纳中国区总部开业,专注OLED显示驱动芯片等领域
1.美格纳中国区总部在合肥开业,专注OLED显示驱动芯片等领域2.南京高端软件及信息服务产业融合集群专项资金项目,芯视界、芯行纪等上榜3.苹果Vision Pro设备已现身中国监管数据库4.传苹果将推10.8英寸OLED iPad Air5.日本住友重工将推出SiC
全球十大搜索引擎排名,Google高居榜首
【全球十大搜索引擎排名】Google全球市场份额为68%,高居榜首。雅虎第二,市场份额为7%,百度第三,市场份额为6.5%,微软第四,市场份额为 3%,其它依次为eBay、NHN、Yandex、Facebook、Ask和阿里巴巴。另:中国是全球第二大搜索市场,所占
Python爬虫实战,完整的思路和步骤(附源码)
小的时候心中总有十万个为什么类似的问题,今天带大家爬取一个问答类的网站。 本堂课使用正则表达式对文本类的数据进行提取,正则表达式是数据提取的通用方法。 环境介绍: python 3.6 pycharm requests re json 爬虫的
搭建你的网站:Wordpress网站建设指南 – 外贸网站建设,Wordpress网站建设,外贸建站公司,外贸独立站,Wordpress成品网站
在这个数字化时代,拥有一个具有吸引力和易用性的网站对于个人和企业而言变得越来越重要。而WordPress作为一个流行的网站建设工具,无疑是许多人首选的选择。今天,我们将向您介绍如何搭建属于您自己的网站,让您在网上展示自己的独特风采
【8735(移动版)腾讯手机管家下载】酷派8735 移动版腾讯手机管家16.1.19免费下载
腾讯手机管家专注手机骚扰拦截,动态守护手机安全,深度清理微信、QQ缓存,让手机体积减半,拒绝卡慢。---认真服务---【骚扰拦截】智能拦截骚扰电话,过滤诈骗垃圾短信【清理加速】清理加速能力升级,释放空间告别卡慢【微信清理】个性清理
哪些因素会影响车价计算器的结果?
车价计算器的结果会受到多种因素影响。 贷款金额由车辆价格和首付款比例决定,首付款高贷款金额就低。 贷款利率很关键,不同金融机构和贷款方案利率有差异,利率高还款总额大。 贷款期限也重要,长的每月还款额低但总利息多,短的每月还款
相关文章
推荐文章
发表评论
0评