Okay, so after a bit of discussion in #python on Freenode IRC, we've come to this verdict:
Any time you have an __init__() and you've inherited, call super().__init__(). Period. However...
There are some camps that argue that if you don't otherwise need an __init__() (other than to call super), don't bother with it at all. Others, including myself, believe in always explicitly declaring an initializer with super(). I don't know that there's a clear right or wrong here. They both work out the same.
The weird behavior in your code is because there's a typo...which honestly came from me. You should NOT pass self to super().__init__(self, message)! That should instead read super().__init__(message). (I've fixed that in my article.)
Thanks to altendky, dude-x, _habnabit, TML, and Yhg1s of Freenode IRC's #python for the insight.
Ryan is an engineer in the Sacramento Area with a focus in Python, Ruby, and Rust. Bash/Python Exercism mentor. Coding, physics, calculus, music, woodworking. Looking for work!
Ooooohkay, gotcha. That makes total sense. Yeah, I think I fall in the camp of not showing the __init__ unless I'm extending it (because I think it looks prettier), but I could see the "explicit is better" argument for the other way.
The most important thing is that you showed me the right way to extend if I need to, which I really appreciate!
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
Okay, so after a bit of discussion in
#python
on Freenode IRC, we've come to this verdict:Any time you have an
__init__()
and you've inherited, callsuper().__init__()
. Period. However...There are some camps that argue that if you don't otherwise need an
__init__()
(other than to call super), don't bother with it at all. Others, including myself, believe in always explicitly declaring an initializer withsuper()
. I don't know that there's a clear right or wrong here. They both work out the same.The weird behavior in your code is because there's a typo...which honestly came from me. You should NOT pass
self
tosuper().__init__(self, message)
! That should instead readsuper().__init__(message)
. (I've fixed that in my article.)Thanks to
altendky
,dude-x
,_habnabit
,TML
, andYhg1s
of Freenode IRC's#python
for the insight.Ooooohkay, gotcha. That makes total sense. Yeah, I think I fall in the camp of not showing the
__init__
unless I'm extending it (because I think it looks prettier), but I could see the "explicit is better" argument for the other way.The most important thing is that you showed me the right way to extend if I need to, which I really appreciate!