[Python-Dev] misbehaving contains (original) (raw)

Guido van Rossum guido at python.org
Wed Jan 23 00:51:12 CET 2008


On Jan 22, 2008 3:46 PM, Daniel Stutzbach <daniel at stutzbachenterprises.com> wrote:

On Jan 22, 2008 1:26 PM, tomer filiba <tomerfiliba at gmail.com> wrote: > >>> class Foo(object): > ... def contains(self, key): > ... return 17 > ... def eq(self, other): > ... return 19 > ... > >>> > >>> f=Foo() > >>> f == 8 > 19 > >>> 8 in f > True

There are many places in the C implementation where a slot returns an int rather than a PyObject. There other replies in this thread seem to support altering the signature of the slot to return a PyObject. Is this setting a precedent that all slots should return a PyObject? Consider the following third behavior: >>> class foo(object): ... def len(self): ... return 'foo' ... >>> x = foo() >>> len(x) Traceback (most recent call last): File "", line 1, in TypeError: an integer is required

Possibly. I guess it depends on the use case. It would be nice to research this more, e.g. figure out how much code needs to be changed to make each of these possible changes, and how likely there will be a use case.

-- --Guido van Rossum (home page: http://www.python.org/~guido/)



More information about the Python-Dev mailing list