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

第13章 正确重载运算符

几个不常用的运算符

这里我们看几个之前没讲过的运算符__neg__,__pos__,__invert__

__neg__是在-v的时候调用

__pos__是在+v的时候调用

__invert__是在~v的时候调用

看下面的例子:

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)

返回结果:

Vector(-1)
Vector(2)
Vector(-2)

你可能感兴趣的:(python)