[ python-Bugs-1730322 ] getattr([], '__eq__')(some-object) is NotImplemented

SourceForge.net noreply at sourceforge.net
Tue Jun 5 20:23:09 CEST 2007


Bugs item #1730322, was opened at 2007-06-03 13:10
Message generated for change (Comment added) made by collinwinter
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1730322&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Type/class unification
Group: Python 2.5
>Status: Closed
>Resolution: Wont Fix
Priority: 5
Private: No
Submitted By: L. Peter Deutsch (lpd)
Assigned to: Nobody/Anonymous (nobody)
Summary: getattr([], '__eq__')(some-object) is NotImplemented

Initial Comment:
Consider:

a = []

class B: pass

class C(object): pass

print a == B()

print a == C()

m = getattr(a, '__eq__')

print m(B())

print m(C())

I think this should print 'False' 4 times, but it actually prints:

False
False
NotImplemented
NotImplemented

If this isn't a bug, please explain why.


----------------------------------------------------------------------

>Comment By: Collin Winter (collinwinter)
Date: 2007-06-05 14:23

Message:
Logged In: YES 
user_id=1344176
Originator: NO

This isn't a bug because a.__eq__() isn't the whole story on equivalence
testing. NotImplemented is a perfectly valid return value for a comparison
method; in this case, it signals the == operator to try a different
approach.

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1730322&group_id=5470


More information about the Python-bugs-list mailing list