鱼C论坛

 找回密码
 立即注册
查看: 2600|回复: 9

[技术交流] 《零基础入门学习Python》43讲内容归纳

[复制链接]
发表于 2015-11-30 21:21:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小牛有话说:
        各位鱼油,大家好。我是小牛,如果您已经看完或者正在看鱼神的《零基础入门学习Python》视频,想随时复习前面的知识点却又不想花太多时间和精力重翻视频,来这里《零基础入门Python学习》整理瞅瞅小牛呕心做的的视频内容的总结吧^_^,如果觉得有用的话,可以点击所属淘贴右上角的“订阅”按钮,这样以后就能够随时看到小牛做的最新的整理了。
       年底恰逢各种项目结题,近两周内没有时间和精力更新帖子,这里对关注小牛帖子鱼油们说声抱歉了,后面小牛会尽力加快更新速度,争取在11月份更完类和对象部分。
本期主要内容导读:
        这一期我们归纳一下鱼神第四十三讲“类和对象:算术运算符2”。这一期里面鱼神主要是介绍了Python类中剩余的算术运算符的魔法方法,包括反运算,增量运算,一元运算的魔法方法。下面将详细介绍他们的用法。
1. 反运算
        当运算符左侧数不支持相应的运算操作时,就需要调用右侧数的运算操作,这时相对应的魔法方法称为反运算,举例说明:
>>> class Nint(int):
        def __add__(self,other):
                print("调用__add__算法...")
                return int.__add__(self,other)
        def __radd__(self,other):
                print("调用__radd__算法...")
                return int.__radd__(self,other)
>>> a = Nint(3)
>>> a + 3
调用__add__算法...
6
>>> 3 + a
调用__radd__算法...
6
        由上述可知,反运算与一般运算符相比,仅仅是前面加了一个r(例如add和radd),当遇上"+"号时默认调用"+"号左侧数的__add__方法,当其不支持时则会调用运算符右侧的__radd__方法。
2. 增量运算符
        Python具有 +=,-=,*=,/=等增量运算符的魔法方法(__iadd__, __isub__, __imul__, __itruediv__等),举例说明:
>>> class Nint(int):
        def __iadd__(self,other):
                print("调用__iadd__算法...")
                return int.__add__(self,other)

       
>>> a = Nint(3)
>>> a += 3
调用__iadd__算法...
>>> a
6
3. 一元运算符
        主要值运算符只有一个操作数,包括+,-,abs()和invert()分别对应魔法方法(__pos__, __neg__,__abs__,__invert__方法等),举例说明:
>>> class Nint(int):
        def __neg__(self):
                print("调用__neg__算法...")
                return int.__neg__(self)

>>> a = Nint(3)
>>> -a
调用__neg__算法...
-3

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +5 收起 理由
~风介~ + 5 + 5 + 5 感谢楼主无私奉献!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-5 13:21:50 | 显示全部楼层
魔法方法这部分正好是之前听不懂的~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-15 09:34:28 | 显示全部楼层
neg不就是-么,怎么-a还是-3没明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-23 17:42:39 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-12 09:50:54 | 显示全部楼层
赞~看完视频再看这个,温故而知新~加深理解~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-16 17:02:32 | 显示全部楼层
反运算有个地方一直不懂:
'''
>>> a + 3
调用__add__算法...
6
>>> 3 + a
调用__radd__算法...
6
'''
3+a   时 3 没有__add__?为什么没有?请求指教
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-16 17:10:25 | 显示全部楼层
~风介~ 发表于 2015-12-5 13:21
魔法方法这部分正好是之前听不懂的~

因为a ==3 所以-a == -3  
这个没有重写,还是原来的 __neg__
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-16 17:11:05 | 显示全部楼层
~风介~ 发表于 2015-12-5 13:21
魔法方法这部分正好是之前听不懂的~

回复错了,不好意思。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-16 17:11:37 | 显示全部楼层
龙sir 发表于 2016-7-15 09:34
neg不就是-么,怎么-a还是-3没明白

因为a ==3 所以-a == -3  
这个没有重写,还是原来的 __neg__
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-10 12:08:40 | 显示全部楼层
枯叶_ 发表于 2016-12-16 17:02
反运算有个地方一直不懂:
'''
>>> a + 3

同问,我分别用dir(a)和dir(1)看里面都有__add__这个方法,不明白视频中怎么讲 1 没有__add__
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 03:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表