6. 一元运算符重载

一元运算符重载

运算符和方法

方法名
运算符和表达式
说明
__neg__(self)
-self
负号
__pos__(self)
+self
正号
__invert__(self)
~self
取反

一元运算符重载的方法的格式:

class 类名: 
    def __xxx__(self):
        ...

只有一个参数绑定要运算的数据自身。

示例

# 一元运算符重载 示例

class Vector1D:
    '''用于描述一维向量的类!'''
    def __init__(self, x):
        self.x = x

    def __repr__(self):
        return f'Vector1D({self.x})'

    def __neg__(self):  # -
        print('__neg__:负号运算符重载')
        return Vector1D(-self.x)

    def __pos__(self):  # +
        print('__pos__:正号运算符重载')
        return Vector1D(self.x)

    def __invert__(self):  # ~
        print('__invert__:取反运算符重载')
        return Vector1D(0)

v1 = Vector1D(100)
v2 = -v1
print('v2:', v2)
v2 = +v1
print('v2:', v2)
v2 = ~v1
print('v2:', v2)