[Ironpython-users] Problem with the "in" operator for
m.schaber at codesys.com
Fri Jul 10 08:50:50 CEST 2015
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...
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