__contains__() and overload of in : Bug or Feature ???
Steve Holden
steve at holdenweb.com
Fri Sep 21 10:29:21 EDT 2007
sebastien.lannez at gmail.com wrote:
> Thanks for your quick response.
>
>>> I need to overload the operator in and let him
>>> return an object ... It seems it is not a
>>> behavior Python expect :
>>>
>>>>>> class A:
>>> ... def __contains__(self,a):
>>> ... return 'yop'
>>> ...
>>>>>> a=A()
>>>>>> print 'toto' in a
>>> True
>>>>>> print a.__contains__('toto')
>>> yop
>
>> Not sure what you're trying to achieve,
>
> Using Python as an algebraic parser for
> symbolic mathematical equation and I need
> that the 'in' operator returns an object based
> on its two arguments.
>
>> but the semantics of the "in" operator
>> make it return a boolean value.
>
> That is why I need to overload it.
>
>> The string "yop" evaluates to the boolean
>> value True, as it is not empty.
>
> Does it means that when overloading an operator, python just
> wrap the call to the method and keep control of the returned
> values ??? Is there a way to bypass this wrapping ???
>
Certain aspects of the interpreter's behavior have ot be hard-wired in
order for it to accomplish anything. This is one of the hard-wried
aspects, so unless you want to change the interpreter's implementation
I'm afraid you can't change it.
regards
Steve
--
Steve Holden +1 571 484 6266 +1 800 494 3119
Holden Web LLC/Ltd http://www.holdenweb.com
Skype: holdenweb http://del.icio.us/steve.holden
Sorry, the dog ate my .sigline
More information about the Python-list
mailing list