一元运算符的魔术方法
- __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)