[Python-Dev] Semantics of __int__(), __index__()

Xavier Morel python-dev at masklinn.net
Thu Apr 4 17:16:20 CEST 2013


On 2013-04-04, at 17:01 , Chris Angelico wrote:

> On Fri, Apr 5, 2013 at 1:59 AM, Guido van Rossum <guido at python.org> wrote:
>> On Thu, Apr 4, 2013 at 7:47 AM, Chris Angelico <rosuav at gmail.com> wrote:
>>> Is there any argument that I can pass to Foo() to get back a Bar()?
>>> Would anyone expect there to be one? Sure, I could override __new__ to
>>> do stupid things, but in terms of logical expectations, I'd expect
>>> that Foo(x) will return a Foo object, not a Bar object. Why should int
>>> be any different? What have I missed here?
>> 
>> 
>> A class can define a __new__ method that returns a different object. E.g.
>> (python 3):
>> 
> 
> Right, I'm aware it's possible. But who would expect it of a class?

Given it's one of the use cases for __new__ and immutable types have to
be initialized through __new__ anyway, why would it be unexpected?


More information about the Python-Dev mailing list