Ereditarietà in Python | Ereditarietà Python [con esempio]

Pubblicato: 2020-12-14

Python è uno dei linguaggi di programmazione più popolari. Nonostante una transizione piena di alti e bassi dalla versione Python 2 a Python 3, il linguaggio di programmazione orientato agli oggetti ha visto un enorme salto di popolarità.

Se pianifichi una carriera come sviluppatore Python, avrai sicuramente un guadagno più alto. Poiché lo stipendio medio per uno sviluppatore Python è di circa $ 119.082 all'anno. Ma, prima di andare avanti con il programma di apprendimento Python, ecco qualcosa che dovresti sapere prima: Ereditarietà in Python. Dai un'occhiata alle nostre certificazioni di data science se sei desideroso di acquisire esperienza in Python e altri strumenti.

Cominciamo prima con cos'è esattamente l'ereditarietà in Python?

Sommario

Che cos'è un'eredità in Python?

Proprio come una relazione genitore-figlio, l'ereditarietà funziona su classi derivate relative alla classe base. Ogni classe "Derivata" eredita da una classe "Base". L'ereditarietà è rappresentata in UML o Unified Modeling Language. È un linguaggio di modellazione standard che include un insieme integrato di diagrammi per aiutare gli sviluppatori a specificare, strutturare e documentare gli elementi dei sistemi software.

La relazione di ereditarietà definisce le classi che ereditano da altre classi come classi derivate, sottoclassi o sottotipi. La classe base rimane l'origine da cui eredita una sottoclasse. Ad esempio, hai una classe Base di "Animale" e un "Leone" è una classe derivata. L'eredità sarà Leone è un animale.

Quindi, la domanda è: cosa eredita la classe "Lion" da "Animal"?

Una classe "Leone" eredita

  • Interfaccia
  • Esecuzione

Nota: è possibile sostituire gli oggetti della classe derivata con oggetti della classe base in un'applicazione nota come principio di sostituzione di Liskov . Indica che se un programma per computer ha l'oggetto P come sottotipo di Q, puoi facilmente sostituire P con Q senza alterare le proprietà.

Anche Checkout: stipendio sviluppatore Python in India

Vantaggi dell'ereditarietà in Python

  • L'ereditarietà in Python aiuta gli sviluppatori a riutilizzare gli oggetti.
  • Ogni volta che una classe eredita la classe base, ottiene l'accesso alla funzionalità dell'oggetto padre.
  • Anche la riutilizzabilità dovuta all'ereditarietà è affidabile poiché la classe base è già stata testata.
  • Tempi e costi di sviluppo ridotti
  • La standardizzazione dell'interfaccia tra le classi diventa facile.
  • Riduce la ridondanza del codice e aiuta a migliorare l'estendibilità
  • La creazione di librerie di classi diventa facile.

Tipi di ereditarietà in Python

Unica eredità

Abbiamo già visto cos'è l'ereditarietà singola: l'ereditarietà della classe "Derivata" dalla classe "Base". Capiamolo attraverso un esempio,

classe Paese:

def Mostra Paese(auto):

print(“Questa è la Spagna”);

classe Stato (Paese):

def ShowState(self):

print("Questo è lo Stato");

st =Stato();

st.ShowCountry();

st.ShowState();

Ereditarietà multilivello

Python è composto da diversi oggetti e, con l'ereditarietà multilivello, ci sono infinite possibilità di riutilizzo delle funzionalità della classe. L'ereditarietà multilivello viene documentata ogni volta che una classe derivata eredita un'altra classe derivata. Non c'è limite al numero di classi derivate che possono ereditare le funzionalità, ed è per questo che l'ereditarietà multilivello aiuta a migliorare la riutilizzabilità in Python.

Ecco un esempio di ereditarietà multilivello

classe Animale:

def parlare (auto):

print(“Animale che parla”)

#La classe figlio Cane eredita la classe base Animale

classe Cane (Animale):

def corteccia (auto):

print("cane che abbaia")

#La classe figlia Dogchild eredita un'altra classe figlia Dog

classe CaneBambino(Cane):

def mangiare (auto):

print(“Mangiare il pane…”)

d = CaneBambino()

d.bark()

d.parlare()

d.mangiare()

Ereditarietà multipla

Python consente agli sviluppatori di ereditare più funzionalità e proprietà da diverse classi di base in un'unica classe derivata. È principalmente un'ottima funzionalità in quanto può consentire di ereditare più dipendenze senza strumenti o codici estesi.

Diamo un'occhiata a un esempio per eredità multiple.

classe Calcolo1:

def Somma(self,a,b):

ritorno a+b;

classe Calcolo2:

def Moltiplicazione(self,a,b):

ritorno a*b;

classe Derivato(Calcolo1,Calcolo2):

def Divide(self,a,b):

ritorno a/b;

d = Derivato()

print(d.Sommario(10,20))

print(d.Moltiplicazione(10,20))

stampa(d.Dividi(10,20))

Dai un'occhiata a: Come convertire il parlato in testo con Python

Come identificare una classe derivata?

Python viene fornito con una funzione issubclass() incorporata che aiuta gli sviluppatori a verificare se una classe è derivata o una classe base. Una volta eseguita questa funzione, restituisce con un risultato "True" per la sottoclasse o una classe derivata, mentre False per la classe Base.

Uno sviluppatore può controllare la classe attraverso questo esempio.

classe miaEtà:

età = 36

classe myObj(myAge):

nome = “Giovanni”

età = miaEtà

x = issottoclasse(myObj, myAge)

Come creare una gerarchia di classi in Python?

L'ereditarietà in Python aiuta a creare gerarchie di classi. Tutte le classi relative condivideranno un'interfaccia comune per comunicare tra loro. Una classe Base definisce l'interfaccia. Le classi derivate possono fornire una specializzazione specifica dell'interfaccia. Qui, stiamo esplorando un modello HR per dimostrare la gerarchia delle classi.

Il sistema delle risorse umane elaborerà le buste paga per i diversi dipendenti dell'azienda; ogni lavoratore è identificato tramite un ID e ha diverse posizioni a libro paga da calcolare.

Per prima cosa creiamo una classe di gestione stipendi come oggetto "Base".

# In hr.py

classe PayrollSystem:

def calcolare_pagamento(auto, lavoratori):

print('Calcolo del libro paga')

print('=====================')

per lavoratore nei lavoratori:

print(f'Paga per: {worker.id} – {worker.name}')

print(f'- Verifica importo: {worker.calculate_payroll()}')

Stampa(")

PayrollSystem esegue un metodo .calculate_payroll() che raccoglie le informazioni del lavoratore, ne stampa l'ID, il nome e controlla l'importo della retribuzione . Ora esegui un lavoratore di classe base che affronta l'interfaccia standard per ogni tipo di lavoratore:

# In hr.py

classe Operaio:

def __init__(self, id, name):

self.id = id

self.name = nome

La creazione di una classe base Worker per tutti i tipi di lavoratori nell'azienda semplifica la gerarchia per il sistema HR. A ogni lavoratore viene assegnato un nome e un ID. Il sistema HR richiede al lavoratore di fornire i dati relativi al proprio stipendio settimanale tramite l'interfaccia .calculate_payroll(). L'esecuzione di questa interfaccia può variare a seconda del tipo di lavoratore.

Da leggere: Domande sull'intervista Python

Conclusione

Qui abbiamo imparato a creare diverse classi Python, stabilire relazioni tra loro e persino impostare la gerarchia delle classi. Ma l'ereditarietà in Python non si limita alle funzionalità qui menzionate.

Certificazione avanzata in Machine Learning e AI : IIT madras, una delle migliori istituzioni educative dell'India, ha collaborato con upGrad per realizzare un corso avanzato sull'apprendimento automatico affinché le persone abbiano una conoscenza completa dell'apprendimento automatico con questo corso.

Se sei curioso di conoscere la scienza dei dati, dai un'occhiata al programma Executive PG in Data Science di IIIT-B e upGrad, creato per i professionisti che lavorano e offre oltre 10 casi di studio e progetti, workshop pratici pratici, tutoraggio con esperti del settore, 1 -on-1 con mentori del settore, oltre 400 ore di apprendimento e assistenza al lavoro con le migliori aziende.

Perché l'ereditarietà è significativa in Python?

L'ereditarietà si riferisce al processo di trasmissione delle proprietà di una classe padre a una classe figlia. È un concetto di programmazione orientata agli oggetti (OOP) ed è significativo in Python. È perché l'ereditarietà fornisce la riutilizzabilità del codice, il che significa che invece di scrivere lo stesso codice più e più volte, possiamo ereditare gli attributi di cui abbiamo bisogno in una classe figlia. È anche facile da capire e implementare poiché descrive una relazione nel mondo reale tra le classi genitore e figlio. Ha una natura transitiva. Poiché tutte le classi figlie ereditano le proprietà dai loro genitori, anche qualsiasi sottoclasse utilizzerà le funzionalità della classe genitore.

L'ereditarietà è necessaria durante l'apprendimento di Python?

Sì, l'apprendimento dell'ereditarietà è necessario durante l'apprendimento di Python. Le enormi applicazioni Python richiedono un aumento del numero di programmatori Python nel mercato attuale. Questa ondata ha portato ad un aumento del numero di persone che imparano Python. Il linguaggio di programmazione Python è ricco di nozioni come l'ereditarietà. Uno dei concetti essenziali in questo linguaggio di programmazione orientato agli oggetti è l'ereditarietà. Poiché l'ereditarietà consente la riusabilità del codice, la leggibilità e la transizione delle proprietà, è imperativo impararlo mentre si impara Python. L'ereditarietà aiuta a creare codice accurato ed efficiente.

In Python, quali tipi di ereditarietà non sono supportati?

Python consente tutte le forme di ereditarietà, comprese le eredità multiple, a differenza di altri linguaggi di programmazione orientati agli oggetti. È possibile costruire nuove classi da quelle preesistenti utilizzando il concetto di ereditarietà. Ciò facilita il riutilizzo del codice. I metodi specificati nella classe genitore vengono utilizzati anche nella classe figlia. Sebbene C++ consenta anche questo tipo di ereditarietà, manca della metodologia avanzata e ben progettata di Python. Python offre anche l'ereditarietà ibrida, che ci consente di implementare molti tipi di ereditarietà in un unico pezzo di codice. Poiché la riutilizzabilità del codice è un punto di forza dell'ereditarietà, è utile in un'ampia gamma di applicazioni quando si lavora con Python.