super or not super?

Rhodri James rhodri at kynesim.co.uk
Fri Jul 12 11:20:13 EDT 2019


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


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /