Classi e oggetti Python [con esempi]

Pubblicato: 2021-06-25

OOP – abbreviazione di Object-Oriented Programming – è un paradigma che si basa su oggetti e classi per creare programmi funzionali. Gli OOP funzionano sulla modularità del codice e le classi e gli oggetti aiutano a scrivere semplici pezzi di codice riutilizzabili che possono essere utilizzati per creare funzionalità e moduli software più grandi. C++, Java e Python sono i tre linguaggi di programmazione orientati agli oggetti più comunemente usati. Tuttavia, quando si tratta di casi d'uso di oggi, come Data Science e Statistical Analysis, Python supera gli altri due.

Questa non è una sorpresa poiché i data scientist di tutto il mondo giurano sulle capacità del linguaggio di programmazione Python. Se hai intenzione di iniziare una carriera in Data Science e stai cercando di padroneggiare Python, conoscere classi e oggetti dovrebbe essere la tua prima priorità.

Attraverso questo articolo, ti aiuteremo a comprendere tutte le sfumature dietro gli oggetti e le classi in Python, insieme a come puoi iniziare a creare le tue classi e a lavorarci.

Sommario

Classi in Python

Una classe in Python è un prototipo definito dall'utente che utilizza gli oggetti creati. In parole povere, una classe è un metodo per raggruppare insieme dati e funzionalità . Le due parole chiave sono importanti da notare. Per dati si intende qualsiasi variabile istanziata o definita, mentre per funzionalità si intende qualsiasi operazione che può essere eseguita su tali dati. Insieme a dati e funzionalità raggruppati in un unico pacchetto, otteniamo classi.

Per comprendere la necessità di creare una classe, considera il seguente semplice esempio. Supponiamo di voler tenere traccia dei gatti nel tuo vicinato che hanno caratteristiche diverse come età, razza, colore, peso, ecc. Puoi utilizzare un elenco e tracciare elementi in modo 1:1, ad es. puoi tracciare la razza fino al età, o età al peso utilizzando un elenco. E se dovessero esserci 100 gatti diversi? E se ci sono più proprietà da aggiungere? In uno scenario del genere, l'utilizzo di elenchi tende a essere disorganizzato e disordinato.

È proprio qui che entrano in gioco le classi!

Le classi consentono di creare una struttura dati definita dall'utente che dispone dei propri membri dati (variabili) e funzioni membro. Puoi accedere a queste variabili e metodi semplicemente creando un oggetto per la classe (ne parleremo più avanti). Quindi, in un certo senso, le classi sono proprio come un progetto per un oggetto.

Inoltre, la creazione di classi crea automaticamente un nuovo tipo di oggetti, che consente di creare ulteriormente più oggetti dello stesso tipo. Ogni istanza di classe può avere attributi associati per mantenerne lo stato. Le istanze di classe possono avere metodi (come definiti dalla loro classe) per modificare lo stato.

Alcuni punti sulla classe Python:

  • Le classi vengono create utilizzando la classe di parole chiave.
  • Gli attributi sono le variabili specifiche della classe che hai creato.
  • Questi attributi sono sempre di natura pubblica e sono accessibili utilizzando l'operatore punto dopo il nome della classe. Ad esempio, ClassName.AttributeName ti recupererà i dettagli dell'attributo particolare di quella particolare classe.

Sintassi per definire una classe:

classe ClassName:

# Dichiarazione-1

.

.

.

# Dichiarazione-N

Per esempio:

gatto di classe:

passaggio

Nell'esempio sopra, la parola chiave class indica che stai creando una classe seguita dal nome della classe (Cat in questo caso). Il ruolo di questa classe non è stato ancora definito.

Vantaggi dell'utilizzo delle classi in Python

  • Le lezioni ti aiutano a tenere tutti i diversi tipi di dati organizzati correttamente in un unico posto. In questo modo, mantieni il codice pulito e modulare, migliorando la leggibilità del tuo codice.
  • L'uso delle classi ti consente di trarre vantaggio da un altro paradigma OOP, chiamato Ereditarietà. Questo è quando una classe eredita le proprietà di un'altra classe.
  • Le classi ti consentono di ignorare qualsiasi operatore standard.
  • Le lezioni rendono il tuo codice riutilizzabile, il che rende il tuo programma molto più efficiente.

Oggetti in Python

Un oggetto è semplicemente un'istanza di qualsiasi classe che hai definito. Nel momento in cui crei una classe, viene già creata un'istanza automatica. Così, come nell'esempio, la classe Cat istanzia automaticamente un oggetto come un vero gatto – di razza persiana e di 3 anni di età. Puoi avere molte diverse istanze di gatti con proprietà diverse, ma affinché abbia un senso, avrai bisogno di una classe come guida. Altrimenti, finirai per sentirti perso, non sapendo quali informazioni sono necessarie.

Un oggetto è sostanzialmente caratterizzato da tre cose:

  • Stato: si riferisce ai vari attributi di qualsiasi oggetto e alle varie proprietà che può mostrare.
  • Comportamento: Questo fondamentalmente denota i metodi di quell'oggetto. Riflette anche il modo in cui questo particolare oggetto interagisce o risponde ad altri oggetti.
  • Identità: l'identità è il nome univoco dell'oggetto mediante il quale può essere invocato come e quando richiesto.

1. Dichiarazione di oggetti

La dichiarazione di oggetti è anche nota come istanziazione di una classe perché non appena si definisce una classe, viene creato un oggetto predefinito in sé (come abbiamo visto in precedenza), che è l'istanza di quella classe. Allo stesso modo, ogni volta che crei un oggetto, stai essenzialmente creando una nuova istanza della tua classe.

In termini delle tre cose (stato, comportamento, identità) che abbiamo menzionato in precedenza, tutte le istanze (oggetti) condividono comportamento e stato, ma le loro identità sono diverse. Una singola classe può avere un numero qualsiasi di oggetti, come richiesto dal programmatore.

Dai un'occhiata all'esempio qui sotto. Ecco un programma che spiega come istanziare le classi.

gatto di classe:

# Una classe semplice

# attributo

attr1 = “felino”

attr2 = “gatto”

# Un metodo di esempio

def divertimento (auto):

print("Io sono un", self.attr1)

print("Io sono un", self.attr2)

# Codice del conducente

# Istanziazione dell'oggetto

Tom = gatto()

# Accesso agli attributi di classe

# e metodo tramite oggetti

stampa(Tom.attr1)

Tom.divertimento();

L'output di questo semplice programma sarà il seguente:

Felino

Sono un felino

sono un gatto

Come puoi vedere, abbiamo prima creato una classe chiamata cat e poi istanziato un oggetto con il nome "Tom". I tre output che abbiamo ottenuto sono stati i seguenti:

  • Feline – questo è stato il risultato della dichiarazione print(Tom.attr1). Poiché Tom è un oggetto della classe Cat e attr1 è stato impostato come Feline, questa funzione restituisce l'output Feline.
  • Sono un felino – Tom.fun(); usa l'oggetto chiamato Tom per invocare una funzione nella classe cat, nota come 'fun'. L'oggetto Tom porta con sé gli attributi della funzione, e quindi la funzione emette le seguenti due frasi: "Sono un felino".
  • Sono un gatto, lo stesso motivo di cui sopra.

Ora che hai una comprensione di come funzionano le classi e gli oggetti in Python, diamo un'occhiata ad alcuni metodi essenziali.

2. Il metodo del Sé

Tutti i metodi definiti in qualsiasi classe devono avere un primo parametro aggiuntivo nella definizione della funzione. A questo parametro non viene assegnato alcun valore dal programmatore. Tuttavia, quando il metodo viene chiamato, Python gli fornisce un valore.

Di conseguenza, se si definisce una funzione senza argomenti, tecnicamente ha ancora un argomento. Questo è chiamato 'self' in Python. Per capirlo meglio, puoi rivedere i tuoi concetti di Puntatori in C++ o farvi riferimento in Java. Il metodo del sé funziona essenzialmente allo stesso modo.

Per capirlo meglio, quando chiamiamo qualsiasi metodo di un oggetto, ad esempio:

myObject.myMethod(arg1, arg2), Python lo converte automaticamente in myClass.myMethod(myObject, arg1, arg2).

Quindi vedi, l'oggetto stesso diventa il primo argomento del metodo. Questo è ciò di cui tratta il sé in Python.

3. Il metodo __init__

Questo metodo è simile ai costruttori in Java o C++. Come i costruttori, il metodo init viene utilizzato per inizializzare lo stato di un oggetto. Questo contiene una raccolta di istruzioni (istruzioni) che vengono eseguite al momento della creazione dell'oggetto. Quando un oggetto viene istanziato per una classe, il metodo init eseguirà automaticamente i metodi inizializzati dall'utente.

Ecco un pezzo di codice per spiegarlo meglio:

# Una classe di esempio con metodo init

Persona di classe:

# metodo init o costruttore

def __init__(self, nome):

self.name = nome

# Metodo di esempio

def say_hi(self):

print('Ciao, mi chiamo', self.name)

p = Persona("Sam")

p.say_ciao()

Produzione:

Ciao mi chiamo Sam

Impara i corsi di analisi dei dati online dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.

Variabili di classe e di istanza

Le variabili di istanza sono univoche per ciascuna istanza, mentre le variabili di classe riguardano metodi e attributi condivisi da tutte le istanze di una classe. Di conseguenza, le variabili di istanza sono fondamentalmente variabili il cui valore è assegnato all'interno di un costruttore o di un metodo con self. D'altra parte, le variabili di classe sono quelle i cui valori sono assegnati all'interno di una classe.

Esamina il codice seguente per capire come vengono definite le variabili di istanza utilizzando un costruttore (metodo init):

gatto di classe:

# Variabile di classe

animale = 'gatto'

# Il metodo init o il costruttore

def __init__(auto, razza, colore):

# Variabile di istanza

self.breed = razza

self.color = colore

# Oggetti di classe Dog

Tom = gatto ("persiano", "nero")

Nevoso = gatto ("Indie", "bianco")

print("Dettagli Tom:')

print('Tom è un', Tom.animal)

print('Razza: ', Tom.razza)

print('Colore: ', Tom.color)

print('\nDettagli innevati:')

print("Neve è un', Snowy.animal)

print('Razza: ', Snowy.breed)

print('Colore: ', Snowy.color)

Se segui il codice sopra riga per riga, ecco l'output che riceverai:

Produzione:

Dettagli Tom:

Tom è un gatto

Razza: persiana

Colore nero

Dettagli innevati:

Snowy è un gatto

Razza: Indie

Colore bianco

In conclusione

Python è un linguaggio di programmazione relativamente più semplice, in particolare per i principianti. Dopo aver imparato le basi, sarai pronto per lavorare con varie librerie Python e risolvere problemi specifici dei dati. Tuttavia, ricorda che mentre il viaggio inizia dalla comprensione di classi e oggetti, devi anche imparare a lavorare con diversi oggetti, classi e le loro sfumature.

Ci auguriamo che questo articolo abbia aiutato a chiarire i tuoi dubbi su classi e oggetti in Python. Se hai domande, lasciaci un commento qui sotto: ti risponderemo molto presto!

Se stai cercando un cambiamento di carriera e stai cercando un aiuto professionale, upGrad è qui per te. Dai un'occhiata al nostro programma Executive PG in Data Science offerto in collaborazione con IIIT-B . Acquisisci familiarità con oltre 14 linguaggi e strumenti di programmazione (incluso Python), ottenendo anche l'accesso a più di 30 progetti rilevanti per il settore. Gli studenti di qualsiasi flusso possono iscriversi a questo programma, a condizione che abbiano ottenuto un punteggio minimo del 50% nella loro laurea.

Abbiamo una solida base di studenti in oltre 85 paesi, oltre 40.000 studenti pagati in tutto il mondo e oltre 500.000 professionisti che lavorano felici. La nostra assistenza professionale a 360 gradi, combinata con l'esposizione di studio e brainstorming con studenti globali, ti consente di ottenere il massimo dalla tua esperienza di apprendimento.

Cosa sono le classi e gli oggetti in Python?

Una classe è un modello o un progetto che lega le proprietà e le funzioni di un'entità. In Python, la parola chiave class viene utilizzata per definire una classe. Tutte le entità o oggetti con attributi simili possono essere inseriti in un'unica classe e sono accessibili dalle funzioni membro.
Un oggetto è un'istanza di una classe. Una volta creata una classe, gli oggetti ottengono tutte le informazioni di quella classe. È proprio come una copia della classe rispettata con i valori effettivi. Un oggetto è classificato in base a tre fattori:
un. Stato
B. Il comportamento
C. Identità

Quale paradigma di programmazione segue Python?

Ci sono quattro principali paradigmi distinguibili seguiti da Python: orientato agli oggetti, procedurale, funzionale e imperativo. Python supporta fortemente i concetti orientati agli oggetti; tuttavia, non è un linguaggio di programmazione puramente orientato agli oggetti.
Il motivo per supportare vari paradigmi di programmazione è che è notevolmente influenzato da alcuni script come CoffeeScript e linguaggi di programmazione orientati agli oggetti come Ruby. Si combina anche con linguaggi come R per aumentare l'efficienza e la potenza di calcolo.
Essendo un linguaggio multi paradigma, si ritiene che Python sia uno dei linguaggi più versatili. È ampiamente utilizzato per lo sviluppo, l'analisi dei dati, il web scraping e l'automazione.

Cosa sono i modificatori di accesso in Python?

Simile ad altri linguaggi di programmazione orientati agli oggetti, una classe in Python ha anche tre modificatori di accesso:
un. Modificatore di accesso pubblico : è possibile accedere direttamente ai membri della classe specificati come public da qualsiasi funzione, ad esempio dalle funzioni membro e dalle funzioni non membri. Se non viene specificato alcun identificatore di accesso, tutti i membri della classe vengono considerati membri pubblici per impostazione predefinita dal compilatore.
B. Modificatore di accesso privato : questi membri della classe sono nascosti agli altri membri della classe. Sono accessibili solo dalle funzioni membro della classe in cui sono definiti.
C. Modificatore di accesso protetto : è possibile accedere ai membri della classe specificati come protetti solo dalle funzioni membro della stessa classe e genereranno un errore se si tenta di accedere all'esterno della classe. L'unica grande differenza tra l'identificatore di accesso privato e protetto è che i membri protetti possono essere ereditati mentre i membri privati ​​non possono essere ereditati.