Glenn Linderman <v+python <at> g.nevcal.com> writes: > > Sounds to me like containment checking is wrong; that if it gets an > exception during the comparison that it should assume unequal, rather > than aborting, and continue to the next entry.
Well as the Zen says: Errors should never pass silently. Unless explicitly silenced. If there's a bug in your __eq__ method, rather than getting wrong containment results, you get the proper exception. > Wouldn't the same issue arise for containment tests when disparate, > incomparable objects are included in the same set? Why is this > different? That's why equality testing almost never fails between standard types. We do have an (IMO unfortunate) exception in the datetime module, though: >>> from datetime import tzinfo, timedelta, datetime >>> ZERO = timedelta(0) >>> class UTC(tzinfo): # UTC class ripped off from the official doc ... """UTC""" ... def utcoffset(self, dt): ... return ZERO ... def tzname(self, dt): ... return "UTC" ... def dst(self, dt): ... return ZERO ... >>> utc = UTC() >>> a = datetime.now() >>> b = datetime.now(utc) >>> a == b Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can't compare offset-naive and offset-aware datetimes Regards Antoine. _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com