[Ironpython-users] Problem with the "in" operator for

Markus Schaber m.schaber at codesys.com
Fri Jul 10 08:50:50 CEST 2015

Hi, Ivan,

Von: Ivan Pozdeev [mailto:vano at mail.mipt.ru]

> > As far as I can see, the "in" operator should return true if any
> > object in the enumerable is "equal" to the object given as reference:
> Indeed, https://docs.python.org/2/reference/expressions.html#membership-test-
> details states:
> For the list and tuple types, x in y is true if and only if there  exists an
> index i such that x == y[i] is true.
> Now, to check if IronPython honors this.
> > assert a in (a,), 'a is in (a,)'
> > assert a in (b,), 'a is in (b,)' # this one fails...
> > As far as I can see via breakpoints, the Equals methods of the objects
> > are never actually called, except on the first assertion with the ==
> > operator.
> My guess is it's cutting corners by comparing hashes instead.

Hm, the GetHashCode() method in my example is hardcoded to return 0, and it is not even called (at least, the breakpoint is not hit.

There must be something more subtle...

Best regards

Markus Schaber

CODESYS(r) a trademark of 3S-Smart Software Solutions GmbH

Inspiring Automation Solutions

3S-Smart Software Solutions GmbH
Dipl.-Inf. Markus Schaber | Product Development Core Technology
Memminger Str. 151 | 87439 Kempten | Germany
Tel. +49-831-54031-979 | Fax +49-831-54031-50

E-Mail: m.schaber at codesys.com | Web: http://www.codesys.com | CODESYS store: http://store.codesys.com
CODESYS forum: http://forum.codesys.com

Managing Directors: Dipl.Inf. Dieter Hess, Dipl.Inf. Manfred Werner | Trade register: Kempten HRB 6186 | Tax ID No.: DE 167014915

This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received
this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorised copying, disclosure
or distribution of the material in this e-mail is strictly forbidden.

More information about the Ironpython-users mailing list