python mul_流畅的python学习笔记:第十三章:重载运算符__add__,__iadd__,__radd__,__mul__,__rmul__,__neg__,__eq__,__inver...

在前面第十章以及第一章的时候介绍了Vector对象的运算符重载。第十三章专门介绍运算符重载。这里我们看几个之前没讲过的运算符__neg__,__pos__,__invert__

classVector(object):

def__init__(self,x):

self.x=x

def__neg__(self):

return "Vector(%d)"% (-self.x)

def__str__(self):

return "Vector(%s)"% (str(self.data))

def__iter__(self):

returniter(self.data)

def__pos__(self):

return "Vector(%d)"% (self.x+1)

def__invert__(self):

return "Vector(%d)"% (~self.x)

if__name__=="__main__":

v=Vector(1)

print-v

print+v

print~v

E:\python2.7.11\python.exe E:/py_prj/fluent_python/chapter13.py

Vector(-1)

Vector(2)

Vector(-2)

__neg__是在-v的时候调用

__pos__是在+v的时候调用

__invert__是在~v的时候调用

下面我们重新来看下+运算符。我们想实现两个向量想加Vector([1,2,3])+Vector([1,2,3])得到[2,4,6].代码如下

classVector(object):

def__init__(self,x):

self.x=x

def__add__(self, other):

return[a+b fora,b inzip(self.x,other.x)]

if__name__=="__main__":

v1=Vector([1,2,3])

v2=Vector([1,2,3])

printv1+v2

E:\python2.7.11\python.exe E:/py_prj/fluent_python/chapter13.py

[2, 4, 6]

在前面的例子中通过zip函数对两个列表进行配对得到元组。[(1,1),(2,2),(3,3)]然后迭代进行加法运算最终得到结果[2,4,6]

但是如果两个向量的格式变化一下。变成Vector([1,2,3])+Vector([1,2,3,4]).我们期望得到Vector([2,4,,6,4]), 向量Vector([1,2,3,4])由于比Vector([1,2,3])多一个数字,想加的时候最好是用零填充较短

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值