分享好友 资讯首页 资讯分类 切换频道
阿里国内python下载
2024-12-30 05:00  浏览:58



阿里云Python训练营
TASK3-DAY3

  • 前言
  • 一、魔法方法
  • 1.基本的魔法方法
  • 2.算术运算符
  • 3.反算术运算符
  • 4.增量赋值运算
  • 5.一元运算符
  • 6.属性访问
  • 7.描述符
  • 8.定制序列
  • 9.迭代器
  • 10.生成器
  • 总结



魔法方法总是被双下划线包围,例如__init__。魔法方法的“魔力”体现在它们总能够在适当的时候被自动调用。


魔法方法的第一个参数应为(类方法) 或者(实例方法)。

  • :代表一个类的名称
  • :代表一个实例对象的名称

(1). init(self[, …]) 构造器,当一个实例被创建的时候调用的初始化方法

演示代码如下:



(2).

  • new(cls[, …]) 在一个对象实例化的时候所调用的第一个方法,在调用__init__初始化前,先调用__new__。
  • new__至少要有一个参数cls,代表要实例化的类,此参数在实例化时由 Python 解释器自动提供,后面的参数直接传递给__init
  • new__对当前类进行了实例化,并将实例返回,传给__init__的self。但是,执行了__new,并不一定会进入__init__,只有__new__返回了,当前类cls的实例,当前类的__init__才会进入。

演示代码如下:



(3). 若__new__没有正确返回当前类cls的实例,那__init__是不会被调用的,即使是父类的实例也不行,将没有__init__被调用。

演示代码如下:



(4).__new__方法主要是当你继承一些不可变的 class 时(比如int, str, tuple), 提供给你一个自定义这些类的实例化过程的途径。

演示代码如下:



(5).del(self) 析构器,当一个对象将要被系统回收之时调用的方法。

演示代码如下:



(6).

  • :
  • 当你打印一个对象的时候,触发
  • 当你使用格式化的时候,触发
  • 强转数据类型的时候,触发
  • 是的备胎
  • 有的时候执行,没有实现的时候,执行
  • 内置函数对应的结果是的返回值
  • 当你使用格式化的时候 触发

演示代码如下:



(7).

  • str(self) 的返回结果可读性强。也就是说,str 的意义是得到便于人们阅读的信息,就像下面的 ‘2019-10-11’ 一样。
  • repr(self) 的返回结果应更准确。怎么说,repr 存在的目的在于调试,便于开发者使用。

演示代码如下:



类型工厂函数,指的是“不通过类而是通过函数来创建对象”。

  • add(self, other)定义加法的行为:+
  • sub(self, other)定义减法的行为:-

演示代码如下:



  • mul(self, other)定义乘法的行为:*
  • truediv(self, other)定义真除法的行为:/
  • floordiv(self, other)定义整数除法的行为://
  • mod(self, other) 定义取模算法的行为:%
  • divmod(self, other)定义当被 divmod() 调用时的行为divmod(a, b)把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。

演示代码如下:



pow(self, other[, module])定义当被 power() 调用或 ** 运算时的行为
lshift(self, other)定义按位左移位的行为:<<
rshift(self, other)定义按位右移位的行为:>>
and(self, other)定义按位与操作的行为:&
xor(self, other)定义按位异或操作的行为:^
or(self, other)定义按位或操作的行为:|



反运算魔方方法,与算术运算符保持一一对应,不同之处就是反运算的魔法方法多了一个“r”。当文件左操作不支持相应的操作时被调用。

这里加数是a,被加数是b,因此是a主动,反运算就是如果a对象的__add__()方法没有实现或者不支持相应的操作,那么 Python 就会调用b的__radd__()方法。

演示代码如下:


  • 定义正号的行为:
  • 定义负号的行为:
  • 定义当被调用时的行为
  • 定义按位求反的行为:


  • : 定义当用户试图获取一个不存在的属性时的行为。
  • :定义当该类的属性被访问时的行为(先调用该方法,查看是否存在该属性,若不存在,接着去调用)。
  • :定义当一个属性被设置时的行为。
  • :定义当一个属性被删除时的行为。

演示代码如下:



描述符就是将某种特殊类型的类的实例指派给另一个类的属性。

  • get(self, instance, owner)用于访问属性,它返回属性的值。
  • set(self, instance, value)将在属性分配操作中调用,不返回任何内容。
  • del(self, instance)控制删除操作,不返回任何内容。

演示代码如下:



协议(Protocols)与其它编程语言中的接口很相似,它规定你哪些方法必须要定义。然而,在 Python 中的协议就显得不那么正式。事实上,在 Python 中,协议更像是一种指南。

容器类型的协议:

  • 如果说你希望定制的容器是不可变的话,你只需要定义__len__()和__getitem__()方法。
  • 如果你希望定制的容器是可变的话,除了__len__()和__getitem__()方法,你还需要定义__setitem__()和__delitem__()两个方法。

例子:编写一个不可改变的自定义列表,要求记录列表中每个元素被访问的次数。

演示代码如下:



  • len(self)定义当被len()调用时的行为(返回容器中元素的个数)。
  • getitem(self, key)定义获取容器中元素的行为,相当于self[key]。
  • setitem(self, key, value)定义设置容器中指定元素的行为,相当于self[key] = value。
  • delitem(self, key)定义删除容器中指定元素的行为,相当于del self[key]。

例子:编写一个可改变的自定义列表,要求记录列表中每个元素被访问的次数。

演示代码如下:



  • 迭代是 Python 最强大的功能之一,是访问集合元素的一种方式。
  • 迭代器是一个可以记住遍历的位置的对象。
  • 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。
  • 迭代器只能往前不会后退。
  • 字符串,列表或元组对象都可用于创建迭代器:

演示代码如下:



  • 迭代器有两个基本的方法:iter() 和 next()。
  • iter(object) 函数用来生成迭代器。
  • next(iterator[, default]) 返回迭代器的下一个项目。
  • iterator – 可迭代对象
  • default – 可选,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发 StopIteration 异常。

演示代码如下:

把一个类作为一个迭代器使用需要在类中实现两个魔法方法 iter() 与 next() 。

  • iter(self)定义当迭代容器中的元素的行为,返回一个特殊的迭代器对象, 这个迭代器对象实现了 next() 方法并通过 StopIteration 异常标识迭代的完成。
  • next() 返回下一个迭代器对象。
  • StopIteration 异常用于标识迭代的完成,防止出现无限循环的情况,在 next() 方法中我们可以设置在完成指定循环次数后触发 StopIteration 异常来结束迭代。

演示代码如下:

  • 在 Python 中,使用了 yield 的函数被称为生成器(generator)。
  • 跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
  • 在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
  • 调用一个生成器函数,返回的是一个迭代器对象。

演示代码如下:



例子:用生成器实现斐波那契数列。

演示代码如下:




学习TASK3,学到许多之前没接触到的内容,TASK3有四个板块:函数,Lambda-表达式,类与对象,魔法方法。这四个板块就函数和表达式之前接触过,其他两个都是新内容,要学习好TASK3是要花大量时间的,希望大家能坚持下来。

    以上就是本篇文章【阿里国内python下载】的全部内容了,欢迎阅览 ! 文章地址:http://w.yusign.com/news/8116.html 
     资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 述古往 http://w.yusign.com/mobile/ , 查看更多   
最新新闻
2023单机排名前十的游戏有哪些 好玩的单机排名前十的游戏盘点手机单机游戏排行榜「2023单机排名前十的游戏有哪些 好玩的单机排名前十的游戏盘点」
今天小编来和大家聊聊2023单机排名前十的游戏有哪些。单机游戏随着时代的发展,种类逐渐多样。玩家的选择也逐渐变多了起来。但是
1.76手游传奇复古单机版手机版单机传奇「1.76手游传奇复古单机版」
1.76手游传奇复古单机版是一款非常好玩的游戏,喜欢此类风格的玩家可以体验一下哦。在1.76手游传奇复古单机版体验中,你会越来越
2022年性价比高的手机排行榜前十名性价比高的手机排行榜前十名「2022年性价比高的手机排行榜前十名」
~ 2022年性价比高的手机排行榜前十名:1、小米MIX4小米公司推出了一款令人印象深刻的高端智能手机小米MIX4,它搭载Snapdragon 88
18岁带好纸巾就此转入新世纪:青春岁月,纸巾伴我迎接新世纪的旅程
青春期的挑战与机遇心理成长的重要性人际关系的新篇章职业规划与自我探索科技对生活方式的影响社会责任感的觉醒  踏入18岁的那
2024年度民间借贷合同终止后的债权债务处理协议3篇.docx
20XX专业合同封面COUNTRACTCOVER20XX专业合同封面COUNTRACTCOVER甲方:XXX乙方:XXXPERSONALRESUMERESUME2024年度民间借贷合同终
2023年618最值得购买的手机,1000-2000元价位全品牌手机推荐|华为、荣耀、小米、OPPO、vivo安卓手机推荐「2023年618最值得购买的手机,1000-2000元价位全品牌手机推荐|华
这篇文章推荐的是1000-2000元价位最值得购买的,各个价位最值得购买的手机汇总,可以看看下面这篇文章:作为一个手机领域创作者
2024年度“感动重庆十大人物”颁奖典礼今晚举行,31日晚重庆卫视播出
在这纷繁复杂的世界里,有这样一群人,他们带着光芒,如同晨曦穿透迷雾,温暖地照耀着你我。他们作为平凡人生的故事主角,于细微
14个手机摄影技巧手机摄影技巧「14个手机摄影技巧」
14个手机摄影技巧  如果大家懂得手机的摄影技巧的话同样能够用手机拍摄出很好的摄影作品,下面小编为你介绍14个手机摄影技巧,
10月Android手机好评榜:第三名实属意外android手机「10月Android手机好评榜:第三名实属意外」
一个存在的事实,部分用户对Android手机的固有印象仍然是时间长了会卡顿,滑动屏幕都能掉帧的那种。iOS则是常常被当作对立面,比