é possibile creare classi ed oggetti che ereditano variabili e metodi da altre classi

sintassi
class nome_nuova-classe (nome_classe_origine):

costruttore
si deve dichiarare di nuovo il costruttore completo
def __init__(self,parametro1,parametro2,parametro3...): definizione del costruttore con tutti i parametri richiesti quelli della classe origine + i nuovi
super().__init__(parametro1,parametro2,...) per non dover settare le variabili di nuovo dei parametri della classe di origine é possibile usare il comando super()
self.variabile3 = parametro3 setto variabile per il nuovo parametro


metodi
si dichiarano nuovi eventuali metodi o stessi metodi della classe originale con possibilità anche di utilizzare il return originale super()
def nuovo_metodo
...
return ....


def metodo_originale modiifca del metodo originale
...
return super().metodo_originale() é possibile ritornare il valore del metodo originale



esempio:
class Veicolo: classe origine

def __init__(self,marca,modello,colore,prezzo):
self.marca = marca
self.modello = modello
self.colore = colore
self.prezzo = prezzo


def dati(self):
variabile = "la mia auto é una {} tipo {} di colore {}".format(self.marca,self.modello,self.colore)
return variabile


def costa(self):
variabile = "la mia auto é una {} costa {}".format(self.marca,self.prezzo)
return variabile



class Automobili(Veicolo): classe derivata
def __init__(self,marca,modello,colore,prezzo,cilindrata):
super().__init__(marca,modello,colore,prezzo) recupero delle variabili ereditate per non doverle ridichiarare
self.cilindrata = cilindrata dichiaro nuovo parametro


def dati(self): modifica del metodo orginale
variabile = " cilindrata {}".format(self.cilindrata) nuovo testo da aggiungere
return super().dati() + variabile utilizzo il metodo originale e aggiungo il nuovo testo



mio_veicolo = Veicolo("Ferrari","Testarossa","nera","1.000") oggetto originale
mia_auto = Automobili("Ferrari","Testarossa","nera","1.000","50cc") oggetto derivato

print(mio_veicolo.dati())
print(mio_veicolo.costa())

print(mia_auto.dati())
print(mia_auto.costa())


risultato
la mia auto é una Ferrari tipo Testarossa di colore nera
la mia auto é una Ferrari costa 1.000

la mia auto é una Ferrari tipo Testarossa di colore nera cilindrata 50cc
la mia auto é una Ferrari costa 1.000