Pitone

Ereditarietà del pitone

Ereditarietà del pitone

Python è un linguaggio di programmazione orientato agli oggetti. In un linguaggio di programmazione orientato agli oggetti, creiamo le classi ed eseguiamo la funzionalità prevista. L'ereditarietà è la caratteristica fondamentale dei linguaggi di programmazione orientati agli oggetti. L'ereditarietà può essere definita come la capacità di una classe di ereditare tutte le funzioni e le proprietà di un'altra classe. L'ereditarietà consente essenzialmente di estendere le proprietà di una classe esistente. L'ereditarietà è sfruttata con i due concetti principali:

  1. Classe madre o classe base
  2. Classe figlia o classe derivata

La classe genitore è la classe che permette ad altre classi di essere ereditate da. È anche chiamata la Classe Base. La classe Child o classe derivata è quella classe che eredita tutte le proprietà e le funzioni di un'altra classe. L'ereditarietà promuove diversi vantaggi, i.e., è la rappresentazione del fenomeno dell'ereditarietà del mondo reale. Incoraggia la riutilizzabilità del codice. Se una funzione è definita in una classe, l'altra classe può ereditare questa classe e utilizzare tutte le funzioni esistenti. Non è necessario scrivere ripetutamente lo stesso codice per eseguire attività simili. L'ereditarietà viene applicata a più livelli. Ad esempio, se la classe B viene ereditata da A e la classe C viene ereditata dalla classe B, la classe C ha tutte le proprietà della classe B e anche della classe A. La sintassi dell'ereditarietà è la seguente:

Classe Genitore:
Dettagli di implementazione della classe genitore
classe ChildClass:
Dettagli di implementazione della classe figlio

Sebbene la classe figlia abbia accesso a tutte le caratteristiche e le funzioni della classe genitore, tuttavia, può aggiungere anche le sue nuove caratteristiche e funzioni.

Questo articolo descrive e copre tutti gli aspetti dell'ereditarietà di Python.

Implementazione dell'ereditarietà in Python

L'ereditarietà può essere applicata in numerose situazioni. Supponiamo che tu stia costruendo un sistema software per un'università. Può essere composto da più parti interessate come studenti, insegnanti, personale, ecc. Quindi ogni persona ha un nome, età, e-mail e altre proprietà comuni. Non è necessario dichiarare tutte le proprietà in ogni classe separatamente. Possiamo creare una classe persona e tutte le classi degli stakeholder possono ereditare tutte le proprietà e le funzioni comuni dalla classe persona. In questo caso, non è necessario scrivere più volte le proprietà comuni in ciascuna classe. Allo stesso modo, possiamo considerare una classe animale. Ci sono centinaia di tipi di animali in questo mondo. Tutti gli animali mangiano, dormono e hanno anche alcune specie. Questo concetto può essere implementato anche usando l'ereditarietà.

Consideriamo l'animale come una super classe e implementiamo l'ereditarietà. Nell'esempio riportato di seguito, abbiamo creato una classe di animali. La classe animale è la classe genitore. Inoltre, abbiamo creato le classi Cane e Gatto che ereditano le proprietà e le funzioni della classe animale. La parola chiave pass viene utilizzata nella classe figlio, quando non è necessario implementare alcuna funzionalità estesa nella classe figlio.

#creazione della classe genitore
classe Animale:
#funzione di inizializzazione
#inizializzazione il nome dell'animale e il tipo di specie
def __init__(self,name,specie_type):
se stesso.nome=nome
se stesso.specie_type=specie_type
#una funzione per stampare il nome dell'animale
def printname(self):
print("Il nome dell'animale è:",self.nome)
#una funzione per stampare il tipo di specie animale
def printspecie(self):
print("Il tipo di specie è:",self.specie_tipo)
#creare la classe cane come classe bambino della classe animali
classe Cane (Animale):
# nessuna estensione o modifica
passaggio
#ora la classe cane ha accesso a tutte le funzioni e proprietà della classe animale
#creare l'oggetto della classe del cane
dogObj= Cane("Cane","carnivoro")
caneObj.nomestampa()
caneObj.printspecie()
#creazione della classe gatto come classe figlio della classe animali
classe Gatto (Animale):
#la funzione di inizializzazione della classe cat
def __init__(self):
#chiamare e usare la funzione di inizializzazione della classe animale
Animale.__init__(self,"cat","mammifero carnivoro")
#ora la classe gatto ha accesso a tutte le funzioni e proprietà della classe animale
#creazione dell'oggetto classe gatto
catObj= Gatto()
gattoObj.nomestampa()
gattoObj.printspecie()

Produzione

Il "Animale.__init__(self,”cat”,”mammifero carnivoro”)” call è la funzione di inizializzazione della classe Animal.

La funzione super()

Python fornisce una funzione super() incorporata per ereditare tutte le proprietà e le funzioni della classe genitore. Quando usiamo la funzione super(), non è necessario menzionare il nome della classe genitore come abbiamo fatto in "Animale.__init__(self,”cat”,”mammifero carnivoro”)” ma la funzione super() punta automaticamente alla classe genitore. Usiamo la super funzione.

#creazione della classe genitore
classe Animale:
#funzione di inizializzazione
#inizializzazione il nome dell'animale e il tipo di specie
def __init__(self,name,specie_type):
se stesso.nome=nome
se stesso.specie_type=specie_type
#una funzione per stampare il nome dell'animale
def printname(self):
print("Il nome dell'animale è:",self.nome)
#una funzione per stampare il tipo di specie animale
def printspecie(self):
print("Il tipo di specie è:",self.specie_tipo)
#creare la classe cane come classe bambino della classe animali
classe Cane (Animale):
#usando la funzione super()
def __init__(self, name, specie_type):
super().__init__(nome, specie_tipo)
#ora la classe cane ha accesso a tutte le funzioni e proprietà della classe animale
#creare l'oggetto della classe del cane
dogObj= Cane("Cane","carnivoro")
caneObj.nomestampa()
caneObj.printspecie()
#creazione della classe gatto come classe figlio della classe animali
classe Gatto (Animale):
#la funzione di inizializzazione della classe cat
#usando la funzione super()
def __init__(self, name, specie_type):
super().__init__(nome, specie_tipo)
#ora la classe gatto ha accesso a tutte le funzioni e proprietà della classe animale
#creazione dell'oggetto classe gatto
catObj= Gatto("gatto","mammifero carnivoro")
gattoObj.nomestampa()
gattoObj.printspecie()

Produzione

Ora aggiungiamo altre funzionalità nelle classi figlio. Ogni classe eredita le proprietà e le funzioni comuni dalla classe genitore, ma la classe figlia può avere qualche classe extra destinata a questa particolare classe. Ora creiamo alcune proprietà e funzioni extra nella classe cane e gatto.

#creazione della classe genitore
classe Animale:
#funzione di inizializzazione
#inizializzazione il nome dell'animale e il tipo di specie
def __init__(self,name,specie_type):
se stesso.nome=nome
se stesso.specie_type=specie_type
#una funzione per stampare il nome dell'animale
def printname(self):
print("Il nome dell'animale è:",self.nome)
#una funzione per stampare il tipo di specie animale
def printspecie(self):
print("Il tipo di specie è:",self.specie_tipo)
#creare la classe cane come classe bambino della classe animali
classe Cane (Animale):
#usando la funzione super()
#nome dell'animale domestico è una funzionalità appena aggiunta
def __init__(self, name, specie_type, pet_name):
super().__init__(nome, specie_tipo)
se stesso.pet_name=pet_name
#creare una nuova funzione
def printpetname(self):
print("Il nome dell'animale domestico è:",self.nome del cucciolo)
#ora la classe cane ha accesso a tutte le funzioni e proprietà della classe animale
#creare l'oggetto della classe del cane
dogObj= Cane("Cane","carnivoro","Max")
caneObj.nomestampa()
caneObj.printspecie()
caneObj.printpetname()
#creazione della classe gatto come classe figlio della classe animali
classe Gatto (Animale):
#la funzione di inizializzazione della classe cat
#usando la funzione super()
#aggiunta di proprietà di cibo e pet_name
def __init__(self, name, specie_type, food, pet_name):
super().__init__(nome, specie_tipo)
se stesso.cibo=cibo
se stesso.pet_name=pet_name
#nuova funzione per accedere alle informazioni sugli alimenti
def printfood(self):
print("Al gatto piace:", self.cibo)
#nuova funzione per il nome dell'animale domestico
def printpetname(self):
print("Il nome dell'animale domestico è:",self.nome del cucciolo)
#ora la classe gatto ha accesso a tutte le funzioni e proprietà della classe animale
#creazione dell'oggetto classe gatto
catObj= Gatto("gatto","mammifero carnivoro","Biscotto","Margherita")
gattoObj.nomestampa()
gattoObj.printspecie()

Produzione

Le funzioni prioritarie

L'override della funzione è il concetto importante nell'ereditarietà. Una funzioneèchiamata funzione sovrascritta se il nome della funzioneèlo stesso nelle classi padre e figlio ma l'implementazione o funzionalitàdella funzioneèdiversa in ogni classe. Vediamo l'esempio di funzione sovrascritta nella classe Animal. Nell'esempio riportato di seguito, abbiamo una funzione eat nelle classi animali e anche nelle classi figlie (Cane e Gatto). Il nome della funzione è lo stesso nelle classi ma l'implementazione è diversa.

#creazione della classe genitore
classe Animale:
sicuramente mangiare (te stesso):
print("Tutti gli animali mangiano cibo")
#creare un oggetto
animaleObj = Animale()
#funzione di chiamata
animaleObj.mangiare()
#creazione di una classe per cani
classe Cane (Animale):
sicuramente mangiare (te stesso):
print("Il cane mangia la carne")
#creazione di oggetti
caneObj=Cane()
#funzione di chiamata
caneObj.mangiare()
classe Gatto (Animale):
sicuramente mangiare (te stesso):
print("Il gatto mangia biscotti e del cibo speciale")
#creazione di oggetti
catObj = Gatto()
#funzione di chiamata
gattoObj.mangiare()

Produzione

Conclusione

L'ereditarietà è uno dei concetti fondamentali dei linguaggi di programmazione orientati agli oggetti. Usando l'ereditarietà, creiamo le classi figlie che ereditano tutte le funzioni e le proprietà della classe genitore. L'ereditarietà promuove la riutilizzabilità del codice. Questo articolo spiega l'ereditarietà in Python con esempi.

Il pulsante centrale del mouse non funziona in Windows 10
Il tasto centrale del mouse ti aiuta a scorrere lunghe pagine web e schermate con molti dati. Se si ferma, finirai per usare la tastiera per lo scorri...
Come cambiare i pulsanti sinistro e destro del mouse su PC Windows 10
È abbastanza normale che tutti i mouse dei computer siano progettati ergonomicamente per gli utenti destrimani. Ma sono disponibili dispositivi mouse ...
Emula i clic del mouse passando il mouse utilizzando il mouse senza clic in Windows 10
L'uso di un mouse o di una tastiera nella postura sbagliata di un uso eccessivo può causare molti problemi di salute, tra cui tensione, sindrome del t...