上这门课:
class Element(object):
__slots__ = ['x', 'y']
def __init__(self, x, y):
self.x = x
self.y = y
@property
def pos(self):
return (self.x, self.y)
def move(self):
self.x -= 1
def __hash__(self): return hash(self.pos)
def __eq__(self, x): return (x.pos if isinstance(x, Element) else x) == self.pos
def __ne__(self, x): return (x.pos if isinstance(x, Element) else x) != self.pos
def __repr__(self): return str(self.pos)
现在我用板条箱装了一组元素:
elements = set([Element(i, i) for i in range(10)])
print((5, 5) in elements) # True
print(elements)
# {(4, 4), (8, 8), (5, 5), (7, 7), (0, 0), (9, 9), (1, 1), (3, 3), (2, 2), (6, 6)}
for el in elements:
el.move()
print((4, 5) in elements) # False
print(elements)
# {(3, 4), (7, 8), (4, 5), (6, 7), (-1, 0), (8, 9), (0, 1), (2, 3), (1, 2), (5, 6)}