流畅的python学习笔记-第13章

第13章 正确重载运算符

<!-- TOC -->python

<!-- /TOC -->it

几个不经常使用的运算符

这里咱们看几个以前没讲过的运算符__neg__,__pos__,__invert__class

__neg__是在-v的时候调用object

__pos__是在+v的时候调用co

__invert__是在~v的时候调用data

看下面的例子:运算符

class Vector(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):
        return iter(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)  # Vector(-1)
    print(+v)  # Vector(2)
    print(~v)  # Vector(-2)

返回结果:return

Vector(-1)
Vector(2)
Vector(-2)
相关文章
相关标签/搜索