On 12/07/2019 15:12, Paulo da Silva wrote:
Hi all!
Is there any difference between using the base class name or super to
call __init__ from base class?
class C1:
def __init__(self):
...
class C2(C1):
def __init__(self):
C1.__init__(self) or super().__init__() ??
...
I have been using super, but I see some scripts where the base class
name is used.
For a simple single inheritance case like this there isn't any
difference, but using super() a good habit to get into. Mostly it makes
code maintenance easier: if you suddenly decide to change your base
class to C3 (say for debug purposes), you only have to change one line:
class C3:
def __init__(self):
...
class C2(C3):
def __init__(self):
super().__init__()
Using the base class by name can lead to errors like this:
class C2(C3):
def __init__(self):
C1.__init__(self) # Whoops, forgot this one
super() also has major advantages if you are stuck with multiple
inheritance. Raymond Hettinger has an excellent article on this here:
https://rhettinger.wordpress.com/2011/05/26/super-considered-super/
--
Rhodri James *-* Kynesim Ltd
--
https://mail.python.org/mailman/listinfo/python-list