[Python-ideas] Non-boolean return from __contains__

Mathias Panzenböck grosser.meister.morti at gmx.net
Tue Jul 27 16:29:56 CEST 2010


On 07/26/2010 04:20 AM, Alex Gaynor wrote:
>
> Fundamentally the argument in favor of it is the same as for the other
> comparison operators: you want to do symbolic manipulation using the
> "normal" syntax, as a DSL.  My example is that of a SQL expression
> builder: SQLAlchemy uses User.id == 3 to create a clause where the ID
> is 3, but for "id in [1, 2, 3]" it has: User.id.in_([1, 2, 3]), which
> is rather unseamly IMO (at least as much as having User.id.eq(3) would
> be).
>

This is a bad example for your wish because this code:
 >>> id in [1, 2, 3]

translates into:
 >>> [1, 2, 3].__contains__(id)

So it doesn't help that 'in' may return something else than a bool
because the method is called on the wrong object for your purposes.

	-panzi



More information about the Python-ideas mailing list