Il seguente pezzo di codice Python utilizza una superclasse esclusivamente come repository di funzioni che una o più sottoclassi possono trarre da:
class Class(object):
''' A trivial repository for functions to be inherited '''
def function(self):
print self
class Subclass(Class):
''' A subclass where the action is'''
def __init__(self):
pass
subitem = Subclass()
subitem.function()
Questa sembra essere la quantità minima di codice adatta a tale scopo.
Tuttavia, ho ricevuto un suggerimento non argomentato sul fatto che un modo migliore per codificare lo stesso sarebbe avere un costruttore nella superclasse e chiamarlo all'interno del costruttore della sottoclasse (apparentemente una sorta di accoppiamento più stretto):
class Class(object):
''' The function repository, now featuring a constructor'''
def __init__(self):
pass
def function(self):
print self
class Subclass(Class):
''' The same subclass, but its constructor invokes the superclass constructor'''
def __init__(self):
Class.__init__(self)
subitem = Subclass()
subitem.function()
La domanda è ... In che modo il secondo modo di sottoclasse sarebbe "superiore" al primo? Superiore potrebbe significare più generale, applicabile a una maggiore varietà di situazioni e così via.
Grazie per averci pensato.