[Python-Dev] == on object tests identity in 3.x (original) (raw)

[Python-Dev] == on object tests identity in 3.x - list delegation to members?

Andreas Maier andreas.r.maier at gmx.de
Wed Jul 16 13:39:55 CEST 2014


Am 13.07.2014 18:23, schrieb Steven D'Aprano:

On Sun, Jul 13, 2014 at 05:13:20PM +0200, Andreas Maier wrote:

Second, if not by delegation to equality of its elements, how would the equality of sequences defined otherwise? Wow. I'm impressed by the amount of detailed effort you've put into investigating this. (Too much detail to absorb, I'm afraid.) But perhaps you might have just asked on the python-list at python.org mailing list, or here, where we would have told you the answer: list eq first checks element identity before going on to check element equality.

I apologize for not asking. It seems I was looking at the trees (behaviors of specific cases) without seeing the wood (identity goes first).

If you can read C, you might like to check the list source code:

http://hg.python.org/cpython/file/22e5a85ba840/Objects/listobject.c

I can read (and write) C fluently, but (1) I don't have a build environment on my Windows system so I cannot debug it, and (2) I find it hard to judge from just looking at the C code which C function is invoked when the Python code enters the C code. (Quoting Raymond H. from his blog: "Unless you know where to look, searching the source for an answer can be a time consuming intellectual investment.")

So thanks for clarifying this.

I guess I am arriving (slowly and still partly reluctantly, and I'm not alone with that feeling, it seems ...) at the bottom line of all this, which is that reflexivity is an important goal in Python, that self-written non-reflexive classes are not intended nor well supported, and that the non-reflexive NaN is considered an exception that cannot be expected to be treated consistently non-reflexive.

This was discussed to death some time ago, both on python-dev and python-ideas. If you're interested, you can start here:

https://mail.python.org/pipermail/python-list/2012-October/633992.html which is in the middle of one of the threads, but at least it gets you to the right time period.

I read a number of posts in that thread by now. Sorry for not reading it earlier, but the mailing list archive just does not lend itself to searching the past. Of course, one can google it ;-)

Andy



More information about the Python-Dev mailing list