集合类中__eq__方法的好例子是什么?

6 投票
2 回答
8496 浏览
提问于 2025-04-15 15:02

我正在开发一个集合类,想为它创建一个 __eq__ 方法。结果发现这比我想象的要复杂得多,我注意到内置集合类的工作方式有很多细节。

对我来说,最有帮助的就是一个好的例子。有没有在标准库或者任何第三方库中,纯 Python 实现的 __eq__ 方法的例子呢?

2 个回答

7

零件(或组件)很复杂。零件应该只是简单的委托。

def __eq__( self, other ):
   if len(self) != len(other):
       # Can we continue?  If so, what rule applies?  Pad shorter?  Truncate longer?
   else:
       return all( self[i] == other[i] for i in range(len(self)) )
1

看看“collections.py”这个文件。最新的版本(从版本控制系统中获取的)实现了一个叫做OrderedDict的东西,并且里面有一个叫做__eq__的功能。在sets.py文件里也有一个__eq__。

撰写回答