Una guida completa sui concetti di OOP in Python

Pubblicato: 2020-10-22

La programmazione orientata agli oggetti o OOP è ormai da tempo parte integrante del mondo del software. È un eccellente paradigma di programmazione che offre un certo livello di libertà e migliora i risultati di programmazione per lo sviluppatore.

Ci sono alcuni concetti e principi di base che ogni sviluppatore dovrebbe conoscere. Guidano la premessa per lo sviluppo di un'applicazione utilizzando questo modello.

Qui daremo un'occhiata ad alcuni dei concetti cruciali ma di base degli OOP in Python . Questi concetti guidano i programmatori a ottenere risultati migliori e a modellare le loro app in modo arricchente.

Sommario

Che cos'è la programmazione orientata agli oggetti?

Per chi non lo sapesse, è qui che inizieremo la nostra induzione. Capiamo gli OOP come farebbe un profano, per avere una comprensione più profonda di come possiamo risolverli.

In questa struttura di programmazione, puoi facilmente combinare cose con proprietà o comportamenti simili in un unico oggetto. Se stai parlando di dati demografici, questo diventa un unico oggetto per questo modello di programmazione. Allo stesso modo, se stai parlando di azioni da intraprendere, questo diventa un altro oggetto.

Sono tutti oggetti che contengono dati grezzi. La tua soluzione software programmerà questi oggetti in modo che raggiungano l'obiettivo finale insieme. Questi oggetti eseguiranno alcune azioni insieme, come programmato da te, e forniranno il risultato.

Un ottimo esempio per capire questo sarebbe un programma di posta elettronica.

Supponiamo che tu abbia un oggetto che contiene il contenuto dell'e-mail, come il nome del destinatario e l'oggetto. C'è un secondo oggetto che dettaglia l'allegato e l'invio dell'e-mail. Progetterai un programma che combinerà automaticamente questi oggetti, assicurerà che un'e-mail completamente scritta sia pronta con gli allegati desiderati e la invierà al destinatario.

Ecco come funziona OOP. Tuttavia, alcuni concetti guidano questo in azione. Diamo una rapida occhiata a questi concetti e al loro funzionamento.

Leggi: Python è un linguaggio orientato agli oggetti?

Come definire una classe?

La classe è ciò che definisce ogni oggetto ed è un aspetto importante dei concetti di OOP in Python . Diciamo che hai quattro oggetti, come occhi, orecchie, bocca e naso. Queste sono parti di una faccia, che è la classe.

Iniziamo con come definire una classe.

Diciamo che stai parlando di una classe chiamata email.

Email di classe:

passaggio

Ecco come viene definita la classe. Utilizzare il "pass" in modo che quando si esegue il codice in un compilatore, non vengano emessi bug.

Solo definire la classe potrebbe non aiutarti molto. È necessario aggiungere alcune proprietà per renderlo attraente e il codice utile. Quindi, devi aggiungere oggetti alla tua classe.

Il metodo ._init_() è ciò che si rivelerebbe utile quando si definiscono le proprietà all'interno di una classe.

Ciò assicurerà che ogni volta che crei un nuovo oggetto per la classe, questo metodo imposterà i parametri allo stato iniziale, inizializzando così un nuovo oggetto ogni volta.

Il primo parametro per questo metodo sarebbe sempre self, anche quando gli si assegnano più parametri.

Allora, cosa succede in questo caso? Supponiamo che tu abbia creato una nuova classe. L'istanza viene trasferita al parametro self. Di conseguenza, ._init_() può assegnare nuove proprietà all'oggetto definito.

Se stai ancora riflettendo su come usarlo, capiamolo attraverso un esempio.

Email di classe:

def ._init_(sé, nome, destinatario, indirizzo):

self.name = nome

self.recipient = destinatario

self.address = indirizzo

Analizziamo questo codice per una migliore comprensione.

L'indentazione espressa nel codice sopra è critica. Dovresti abbinare lo stesso quando scrivi il tuo programma usando OOP in Python . Comprendiamo la variabile self nel codice sopra.

Il self.name produce un attributo chiamato nome. Il valore del parametro name viene assegnato a questo attributo. Allo stesso modo, attributi e valori vengono assegnati anche alle variabili dell'altro sé.

Questi attributi sono noti come istanza. Dovrai specificare il valore di ogni attributo menzionato all'interno di una particolare istanza. Diciamo che ci sono due tipi di email: benvenuto e nutrimento. Il destinatario dell'e-mail sarebbe diverso per entrambe le istanze (e-mail di benvenuto e e-mail di nutrimento).

Gli attributi di classe, d'altra parte, sono diversi; conterranno lo stesso valore per tutte le istanze di classe. Ad esempio, queste sono tutte e-mail in entrata. Questo è l'attributo di classe che puoi definire per loro.

Email di classe:

#Attributo di classe

E-mail: "E-mail in entrata"

def ._init_(sé, nome, destinatario, indirizzo):

self.name = nome

self.recipient = destinatario

self.address = indirizzo

Ulteriori informazioni su: Come codificare, compilare ed eseguire progetti Java

Comprensione delle variabili di classe e di istanza

Prendiamo l'esempio sopra in cui abbiamo creato un attributo di classe e due variabili di istanza per comprendere meglio gli OOP in Python .

Email di classe:

E-mail: "E-mail in entrata"

def ._init_(sé, nome, destinatario, indirizzo):

self.name = nome

self.recipient = destinatario

self.address = indirizzo

Parliamo di istanziare gli oggetti all'interno di questa classe. È necessario impostare i valori per ciascuno di questi oggetti. Questo sarà il valore iniziale per ogni oggetto, come discusso nella parte precedente della guida. Nel caso in cui non assegni valori a questi oggetti, riceverai un TypeError.

>>> E-mail ()

Tracciamento (ultima chiamata più recente):

File “<pyshell#6>”, riga 1, in <modulo>

E-mail ()

TypeError: __init__() mancano 4 argomenti posizionali: 'nome', 'destinatario' e 'indirizzo'

Possiamo aggiungere valore immediatamente dopo il nome della classe.

Email di educazione = Email (di educazione, David, [email protected])

E-mail di benvenuto = E-mail (Benvenuto, Daisy, [email protected])

Con il codice sopra, abbiamo generato due istanze, per un'e-mail di nutrimento e un'e-mail di benvenuto. Controlliamo il __init__() definito dopo l'istanza della classe per il codice sopra. Vediamo quattro parametri, incluso il self. Tuttavia, nessuna variabile è stata menzionata per sé. Capiamo perché?

Quindi, ogni volta che crei un nuovo oggetto all'interno di una classe, stai creando un'istanza della classe. Durante questa operazione assegnerai un indirizzo di memoria, in cui verrà archiviata la variabile. Non appena crei un'istanza di un nuovo oggetto, Python creerà automaticamente un'istanza e verrà passata alla prima variabile nel metodo .__init__(). Di conseguenza, il sé viene rimosso in questo metodo.

Con la variabile di classe, puoi assicurarti che ogni istanza che hai creato abbia una variabile o un valore ad essa associato. Ciò garantirà risultati più rapidi e facili e, quindi, conclusioni più sicure per la tua programmazione.

Leggi anche: Deve leggere 47 domande e risposte per l'intervista OOPS per matricole ed esperti

Riassumendo

Abbiamo compreso i vari aspetti della creazione di una classe, un oggetto e un metodo utilizzando il modello di programmazione Python OOPs qui. Oltre a questo, abbiamo anche compreso concetti come le istanze e l'istanziazione, che sono fondamentali per la programmazione degli OOP in Python. Successivamente, dovrai comprendere i principi che governano queste istanze e classi come l'ereditarietà, il polimorfismo, l'astrazione e l'incapsulamento. Sono concetti fondamentali di OOP in Python che guidano la tua applicazione e i suoi risultati.

Per spostarti ulteriormente nella canalizzazione di Python, devi avere le tue basi chiare e radicate. Quindi, tuffati nelle classi e capisci come funziona. Gioca un po' con queste variabili e comprendi i loro risultati prima di poter configurare la tua applicazione.

Se sei curioso di imparare la scienza dei dati per essere all'avanguardia nei rapidi progressi tecnologici, dai un'occhiata al diploma PG in Data Science di upGrad & IIIT-B e migliora le tue competenze per il futuro.

Perché utilizziamo gli OOP?

La programmazione orientata agli oggetti (OOP) è un framework di programmazione che si basa sullo sviluppo di "oggetti" riutilizzabili con i loro attributi e comportamenti su cui è possibile agire, manipolare e impacchettare. Python supporta sia OOP che altri framework. In Python, ottieni l'OOP usando le classi. Python ha tutte le solite caratteristiche della programmazione orientata agli oggetti. Gli sviluppatori utilizzano OOP nelle loro applicazioni Python perché rende i codici più riutilizzabili e più facile lavorare con programmi più grandi. Poiché una classe può essere definita solo una volta e utilizzata più volte, i sistemi OOP impediscono di duplicare il codice. Di conseguenza, OOP rende semplice seguire il concetto "Non ripetere te stesso" (DRY).

Che cos'è una classe?

Una classe Python è simile a un progetto per la generazione di un nuovo oggetto. Un oggetto è tutto ciò che si desidera modificare o cambiare durante la codifica. Quando istanziamo un oggetto di classe, cosa che accade quando definiamo una variabile, un nuovo oggetto viene creato da zero. Gli oggetti di classe possono essere riutilizzati tutte le volte che è necessario. Una classe viene utilizzata per costruire ogni elemento. Considera questo come il progetto per un certo tipo di oggetto. Le classi elencano gli attributi richiesti per quel tipo di oggetto ma non assegnano loro un valore. Le classi specificano anche metodi condivisi da tutti gli oggetti dello stesso tipo.

Che cos'è una variabile di istanza?

Un'istanza di classe possiede variabili di istanza in Python. Il valore di una variabile di istanza potrebbe cambiare in base all'istanza con cui è collegata. È diverso da una variabile di classe, a cui può essere assegnato un solo valore. Le variabili di istanza sono dichiarate all'interno di un metodo di classe. Quando dichiariamo una classe, possiamo assegnare valori a variabili di istanza. Quando dichiariamo la classe, forniamo i valori che desideriamo assegnare come argomenti.