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