OOP - how to abort an __init__ when the initialisation code fails ?

Rob Gaddi rgaddi at highlandtechnology.invalid
Mon Nov 4 13:55:37 EST 2019


On 11/4/19 10:36 AM, Luciano Ramalho wrote:
> Sorry, I responded only to the OP. My response:
> 
> """A failed __init__ should raise an appropriate exception. A bare
> return or returning None is what any __init__ is expected to do in the
> normal case, so it signals success."""
> 
> Actually, the Python interpreter *does* check the return of __init__.
> If it is anything other than None, Python 3 raises TypeError when you
> try to create an instance:
> 
>>>> class X:
> ...        def __init__(self):
> ...            return 1
> ...
>>>> x = X()
> Traceback (most recent call last):
>    File "<stdin>", line 1, in <module>
> TypeError: __init__() should return None, not 'int'
> 
> Cheers,
> 
> Luciano
> 
> 
> On Mon, Nov 4, 2019 at 2:31 PM Rob Gaddi
> <rgaddi at highlandtechnology.invalid> wrote:
> >> [snip]
>> Raise an exception.  Returning None will specifically NOT accomplish the thing
>> you want; nothing ever checks the return value of __init__.
>>

I'll be damned; you're right.  Learn something new every day.

-- 
Rob Gaddi, Highland Technology -- www.highlandtechnology.com
Email address domain is currently out of order.  See above to fix.


More information about the Python-list mailing list