鱼C论坛

 找回密码
 立即注册
查看: 2043|回复: 0

[技术交流] 章节十一:算术运算

[复制链接]
发表于 2017-8-22 22:04:52 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 向西而笑 于 2017-8-24 16:53 编辑
课时42-43:算术运算
工厂函数:所谓的工厂函数就是类对象,调用工厂函数时就是生成了一个类实例对象。可以用type()函数来查看其本质,如:
>>> type(str)
<class 'type'>
>>> type(list)
<class 'type'>
>>> type(dict)
<class 'type'>
>>> type(tuple)
<class 'type'>
>>> class A:
   pass
>>> type(A)
<class 'type'>


python提供了一些魔法方法自定义数值处理,通过对这些魔法方法的重写来自定义任何对象间的算术处理,当进行数值计算时就会自动地调用相应的魔法方法。
举一些例子说明:

算术运算符:__add__(self,other)和__sub__(self,other)分别是进行加和减计算处理的魔法方法。下面的例子通过重写这两个魔法方法把加和减的功能调换了:
>>> class X(int):
   def __add__(self,other):
          return int.__sub__(self,other)
   def __sub__(self,other):
          return int.__add__(self,other)
>>> a = X(100)
>>> b = X(10)
>>> a - b
110
>>> a + b
90
其他魔法方法使用方法也是如此。

反运算:本来应该是运算符左边的主动去‘处理’右边的,由于某些原因左边不支持运算就只能右边的主动了。比如a – b就是从a中减去b。但是如果a‘无能’,那就是从b中减去a。
>>> class X(int):
   def __rsub__(self,other):
          print('好吧,我来当攻!')
          return int.__rsub__(self,other)
 
  
>>> a = X(100)
>>> a - 10
90
>>> 10 - a
好吧,我来当攻!
-90


增量运算符和一元操作符
和a = a +1简化写成a += 1一样操作的魔法方法叫做增量运算。
复习一下‘一元’的意思:即只有一个操作数的叫做一元操作符。例如:
>>> class X(int):
   def __abs__(self):
          print('抱死你...')
          return int.__abs__(self)
>>> a = X(-10)
>>> abs(a)
抱死你...
10



评分

参与人数 1鱼币 +3 收起 理由
小甲鱼 + 3

查看全部评分

本帖被以下淘专辑推荐:

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 10:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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