Sono curioso di sapere se esiste un modo in Python per forzare (dalla classe Parent) affinché un metodo genitore venga chiamato da una classe figlia quando viene sovrascritto.Forza la classe figlio a chiamare il metodo padre quando lo sovrascrive.
Esempio:
class Parent(object):
def __init__(self):
self.someValue=1
def start(self):
''' Force method to be called'''
self.someValue+=1
La corretta attuazione di quello che volevo il mio bambino di classe Bambino fare sarebbe:
class ChildCorrect(Parent):
def start(self):
Parent.start(self)
self.someValue+=1
Tuttavia, c'è un modo per forzare gli sviluppatori che sviluppano classi figlie di in particolare chiama (non solo sostituisci) il metodo "start" definito nella classe Parent nel caso in cui dimentichi di chiamarlo:
class ChildIncorrect(Parent):
def start(self):
'''Parent method not called, but correctly overridden'''
self.someValue+=1
Inoltre, se questa non è considerata la migliore pratica, quale sarebbe un'alternativa?
Il metodo di sovrascrittura deve avere libertà * quando * chiama super? Cioè andrebbe bene se il metodo di override fosse costretto a chiamare super all'inizio o alla fine della sua esecuzione? (Probabilmente, non è corretto limitarlo nel caso generale.) Se lo è, un metaclasse può essere usato per avvolgere qualsiasi metodo di override e chiamare implicitamente super; il metodo di override non sarebbe quindi autorizzato a chiamare super da solo (che potresti non essere in grado di applicare). –
Che dire di un utente dovrebbe chiamare il metodo della superclasse, simile al modo in cui le implementazioni del metodo astratto mancanti vengono rilevate con un linter? – pnovotnak