集合类中__eq__方法的好例子是什么?
我正在开发一个集合类,想为它创建一个 __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__。