Python中的集合有没有神奇的方法?

Fom*_*aut 0 python python-3.x

我有一个像这样的自定义对象:

class MyObject:
    def __init__(self, x, y):
        self.x = x
        self.y = y
Run Code Online (Sandbox Code Playgroud)

我希望它根据规则与集合一起使用:如果对象相同,则x它们相等

s = set()
s.add(MyObject(1, 2))

print(MyObject(1, 3) in s)  # It is False. I want it to be True, because `x = 1` for both.
Run Code Online (Sandbox Code Playgroud)

有没有一种神奇的方法可以实现MyObject我的目的?

bal*_*man 6

  • __eq__(self, other)
  • __hash__(self)

有关更多信息,请参阅https://hynek.me/articles/hashes-and-equality/