Python中一元运算符的魔术方法

一元运算符的魔术方法

  • __pos__(self)魔术方法:在对象前面使用正号的时候执行的方法。
  • __neg__(self)魔术方法:在对象前面使用负号的时候执行的方法。
  • __abs__(self)魔术方法:在对象上使用abs函数的时候执行的方法。
  • __invert__(self)魔术方法:在对象前面使用~的时候执行的方法。
class Coordinate(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __pos__(self): # 在对象前加“+”的操作
        return self

    def __neg__(self): # 在对象前加“-”的操作
        new_coordinate = Coordinate(-self.x, -self.y)
        return new_coordinate
    """ 方法2:
        self.x = -self.x
        self.y = -self.y
        return self
    """

    def __abs__(self): # 在对象上使用abs方法的操作
        new_coordinate = Coordinate(abs(self.x), abs(self.y))
        return new_coordinate
    def __invert__(self):
        new_coordinate = Coordinate(255-self.x, 255-self.y)
        return new_coordinate

    def __str__(self):
        return "Coordinate({},{})".format(self.x,self.y)
c1 = Coordinate(24, 35)
print(c1)    #  Coordinate(24,35)
c1 = -c1
print(c1)    #  Coordinate(-24,-35)
c1 = ~c1
print(c1)    #  Coordinate(231,220)

猜你喜欢

转载自blog.csdn.net/qq_43539055/article/details/85038141