Override del metodo in Python: che cos'è, come farlo?
Pubblicato: 2021-09-28Python è un linguaggio generico di alto livello che è un must per gli appassionati di programmazione informatica. Simile ad altri linguaggi per computer ampiamente utilizzati come JAVA, C++, Golang, Ruby, ecc. Python è anche un linguaggio di programmazione orientato agli oggetti in cui la codifica dipende da classi e oggetti. Il concetto consente agli sviluppatori di strutturare codici semplici e riutilizzabili che poi denotano singoli oggetti. Ci sono diverse funzioni utili offerte dai linguaggi OOP, una delle quali è Method Override.
In questo articolo, comprenderemo il concetto di ereditarietà per esplorare l'override del metodo in Python. Cominciamo col capire cos'è una classe.
Sommario
Che cos'è una classe?
La classe è una caratteristica o un'istanza nel paradigma di programmazione orientato agli oggetti. È un modello di codifica del programma esteso all'interno di un programma. Le classi aiutano i programmatori a inserire i dati iniziali di ogni oggetto (array, stringhe, variabili, ecc.) al momento della creazione. Ci consentono inoltre di definire le caratteristiche della classe e di determinare come elaboreranno i dati o forniranno input. Ci sono sottoclassi o classi figlie sotto le classi genitore o superclassi definite in un programma.
Cos'è l'ereditarietà? Quali sono i suoi vantaggi?
L'ereditarietà nella programmazione orientata agli oggetti è una proprietà che consente di ereditare le caratteristiche di una classe in altre classi o sottoclassi. Questo aiuta a prevenire la ridondanza dei dati, a compilare meglio il programma ea limitare la possibilità di commettere errori.
Questa capacità di una classe di derivare o ereditare funzionalità da altre classi è nota come ereditarietà. La classe le cui caratteristiche e proprietà vengono utilizzate per derivare una sottoclasse è chiamata classe Parent.
Ecco i vantaggi dell'ereditarietà:
- L'ereditarietà consente agli utenti di rappresentare bene le relazioni in tempo reale.
- Consente il riutilizzo dei codici. Consente inoltre ai programmatori di fornire più caratteristiche a una classe.
- Consente la transizione. Supponiamo che la classe Q derivi le caratteristiche dalla classe W, allora le sottoclassi di Q erediteranno automaticamente dalla classe W.
Tipi di eredità
Esistono tre tipi di eredità che sono i seguenti;
1. Ereditarietà singola
Nell'ereditarietà singola, una classe derivata può ereditare le caratteristiche da una singola classe padre. Consente il riutilizzo dei codici e l'aggiunta di nuove funzionalità.
2. Ereditarietà multipla
Si riferisce al trasferimento delle caratteristiche di più di una classe madre in una sottoclasse. Qui, le caratteristiche della classe base vengono ereditate automaticamente nella sottoclasse.
3. Ereditarietà multilivello
Quando le caratteristiche della classe padre e della sottoclasse vengono ulteriormente ereditate in un'altra classe derivata, si parla di ereditarietà multilivello.
Che cos'è l'override del metodo in Python?
L'overriding del metodo è una caratteristica dei linguaggi di programmazione orientati agli oggetti in cui la sottoclasse o la classe figlia può fornire al programma caratteristiche specifiche o uno specifico processo di implementazione dei dati forniti che sono già definiti nella classe genitore o nella superclasse.
Quando gli stessi valori restituiti, parametri o nome vengono immessi nella sottoclasse come nella classe padre, il metodo di implementazione nella sottoclasse sovrascrive il metodo menzionato nella classe padre. Questo è noto come sovrascrittura del metodo.
La sua esecuzione dipende dai dati utilizzati per richiamare il metodo e non dai dati di riferimento già forniti nella classe padre. Se un oggetto della classe padre viene utilizzato per invocare il metodo di implementazione specifico di un programma, viene richiamata la versione del metodo scritta nella classe padre. D'altra parte, se un oggetto della sottoclasse viene utilizzato per invocare il metodo, l'esecuzione avverrà secondo le funzionalità menzionate nella sottoclasse. Se sei un principiante e desideri acquisire esperienza nella scienza dei dati, dai un'occhiata ai nostri corsi di scienza dei dati.
Caratteristiche dell'override del metodo
Questa sezione esplorerà le caratteristiche salienti offerte dal metodo che sovrascrive in Python:
- L'override del metodo consente l'utilizzo di funzioni e metodi in Python che hanno lo stesso nome o firma.
- L'overloading del metodo è un esempio di polimorfismo di runtime.
- Nell'override del metodo, è sempre necessario utilizzare la funzione di ereditarietà.
- L'overloading del metodo viene eseguito tra le classi padre e le classi figlie.
- Viene utilizzato per modificare il comportamento e l'implementazione dei metodi esistenti.
- È sempre necessario un minimo di due classi per l'override del metodo.
Comprensione dell'override del metodo: ereditarietà multipla e multilivello
Le eredità multiple e multilivello sono due tipi di eredità offerti dalla maggior parte dei linguaggi di programmazione orientati agli oggetti. In questa sezione, vedremo come l'override del metodo viene utilizzato in eredità varie e multilivello:
1. Ereditarietà multipla
In questo tipo di eredità di classe o oggetto, una sottoclasse eredita le caratteristiche e le caratteristiche di più classi o basi padre. Ad esempio, ci sono tre diverse classi padre: classe.1, classe.2, classe.3 e c'è classe.a, che è la classe figlia che esegue le funzionalità di eredità multiple. Il class.a conterrà le funzionalità ereditate da tutte e tre le classi base.
Ecco un programma di esempio:
# Definizione della classe genitore 1
classe Parent1():
# Metodo di esposizione dei genitori
def mostra (auto):
print("Dentro Genitore1")
# Definizione della classe Genitore 2
classe Parent2():
# Metodo di esposizione dei genitori
def display(auto):
print("Dentro Genitore2")
# Definizione della classe figlio
classe Figlio(Genitore1, Genitore2):
# Metodo spettacolo per bambini
def mostra (auto):
print("Dentro il bambino")
# Codice del conducente
obj = figlio()
obj.show()
obj.display()
Produzione:
Dentro il bambino
Dentro Genitore2
2. Ereditarietà multilivello
In questo tipo di eredità di classe o oggetto, una sottoclasse viene ereditata direttamente dalla classe base, che già porta le caratteristiche della classe madre. È fondamentalmente come la relazione padre-figlio o nonno-nipote. Le caratteristiche della sottoclasse sono uniche per la sua classe padre. Ad esempio, esiste una classe padre denominata class.Q e viene formata una sottoclasse nell'estensione di class.Q. Qui, la sottoclasse può fungere da classe base per un'altra sottoclasse.
Ecco un programma di esempio:
classe Parent():
def display(auto):
print("All'interno del genitore")
classe Bambino (Genitore):
# Metodo spettacolo per bambini
def mostra (auto):
print("Dentro il bambino")
classe Nipote (Bambino):
# Metodo spettacolo per bambini
def mostra (auto):
print("Dentro il nipote")
# Codice del conducente
g = Nipote()
g.show()
g.display()
Uscita :
Dentro il nipote
Genitore interno
Invocazione di metodi di classe base all'interno di metodi sovrascritti
C'è un metodo in cui i metodi della classe padre possono essere invocati tra i metodi sovrascritti. Può essere fatto utilizzando i seguenti processi:
Usando il nome della classe
la scrittura del metodo del nome della classe nel metodo sottoposto a override nella sottoclasse può richiamare il metodo fornito nella classe padre.
Usando la funzione di super()
il linguaggio di programmazione di Python offre una funzione chiamata super(), che viene usata soprattutto per riferirsi alla classe genitore.
Conclusione
L'override del metodo è una delle caratteristiche più cruciali del linguaggio Python. La proprietà trova ampio uso nella programmazione di applicazioni di scienza dei dati e consente un'analisi dei dati compatta ed efficiente. L'override del metodo semplifica anche la compilazione dei codici e il ricontrollo. Ci sono alcuni prerequisiti per utilizzare questa funzionalità: comprendere il concetto di base di classi ed ereditarietà.
Se desideri approfondire l'override del metodo in Python, ti suggeriamo di frequentare il Master of Science in Data Science di 18 mesi . upGrad offre questo corso da IIIT Bangalore e Liverpool John Moore's University. Il corso ti insegna abilità come statistica, analisi predittiva utilizzando Python, apprendimento automatico, visualizzazione dei dati, analisi dei big data e altro ancora. Gli studenti con una forte conoscenza dei concetti di Python sono ben posizionati per affrontare argomenti come Deep Learning, Natural Language Processing, Business Analytics e Data Engineering.
Contattaci oggi per iniziare il tuo viaggio di apprendimento!
Distinguere tra sovrascrittura e sovraccarico.
La differenza principale tra l'override e l'override è che l'override avviene tra gli stessi metodi o le stesse firme, mentre l'override si verifica tra gli stessi metodi di classe.
1. L'override del metodo esemplifica il polimorfismo in fase di compilazione, mentre l'override del metodo esemplifica il polimorfismo in fase di esecuzione.
2. L'override del metodo non può essere eseguito in Python, mentre l'esecuzione dell'override del metodo è possibile in determinate condizioni.
Quali sono le caratteristiche dell'override del metodo?
Ecco le caratteristiche dell'override del metodo:
1. Esemplifica il polimorfismo di runtime.
2. Stabilisce un collegamento tra la classe madre e la classe figlia.
3. Poiché connette almeno una classe, è necessario utilizzare la caratteristica dell'ereditarietà.
4. L'override del metodo consente di utilizzare un unico nome per più di una funzione.
Usiamo l'override del metodo per implementare il metodo della classe genitore nella classe derivata.
Quali sono i diversi tipi di eredità? È possibile sovrascrivere i metodi privati in Python?
In primo luogo, l'override del metodo utilizza eredità multilivello e multiple.
Nell'ereditarietà multilivello, la sottoclasse viene ereditata da una classe base costituita dalle caratteristiche della classe padre. Ma nel caso di eredità multipla, una sottoclasse mostra le caratteristiche di più di una o più classi o basi padre.
L'override del metodo privato non può avvenire in Java, ma è possibile in Python utilizzando un processo noto come 'name mangling'.