Corso
Un approccio orientato agli oggetti è più utile quando il tuo codice prevede interazioni complesse tra molti oggetti. Nel codice di produzione reale, le classi possono avere decine di attributi e metodi con logiche complicate, ma la struttura di base è la stessa anche per la classe più semplice.
Le classi sono come un progetto per gli oggetti che delinea i possibili comportamenti e stati che ogni oggetto di un certo tipo può avere. Per esempio, se dici: "ogni cliente avrà un numero di telefono e un'email e sarà in grado di effettuare e annullare ordini", hai appena definito una classe! In questo modo, puoi parlare dei clienti in modo unificato. Poi un oggetto Customer specifico è semplicemente una realizzazione di questa classe con un determinato valore di stato.

Trovare le classi in Python
In Python, tutto è un oggetto. Numeri, stringhe, DataFrame e persino le funzioni sono oggetti. In particolare, tutto ciò con cui hai a che fare in Python ha una classe, un modello associato dietro le quinte. L'esistenza di queste interfacce unificate è il motivo per cui puoi usare, per esempio, qualsiasi DataFrame nello stesso modo.
Puoi chiamare type() su qualsiasi oggetto Python per scoprire la sua classe. Per esempio, la classe di un array numpy si chiama in realtà ndarray (per array n-dimensionale).
import numpy as np
a = np.array([1,2,3,4])
print(type(a))
numpy.ndarray
Le classi incorporano informazioni su stato e comportamento. Le informazioni di stato in Python sono contenute negli attributi e le informazioni di comportamento nei metodi.
Attributi e metodi
Prendi un array numpy: hai già usato alcuni dei suoi metodi e attributi!
Per esempio, ogni array numpy ha un attributo "shape" a cui puoi accedere specificando il nome dell'array seguito da un punto e shape.
Stato <--> Attributi
import numpy as np
a = np.array([1,2,3,4])
# shape attribute
a.shape
(4,)
Ha anche metodi come max e reshape a cui si accede sempre tramite il punto.
Comportamento <--> Metodi
import numpy as np
a = np.array([1,2,3,4])
# reshape method
a.reshape(2,2)
array([[1, 2],
[3, 4]])
Creare la tua prima classe
In questo esempio creerai una classe vuota Employee. Poi creerai un oggetto emp della classe Employee chiamando Employee().
Prova a stampare l'attributo .name dell'oggetto emp nella console. Cosa succede?
# Create an empty class Employee
class Employee:
pass
# Create an object emp of class Employee
emp = Employee()
Per saperne di più sulla programmazione orientata agli oggetti in Python, guarda questo video tratto dal nostro corso, Object-Oriented Programming in Python.
Questo contenuto è tratto dal corso Object-Oriented Programming in Python di DataCamp a cura di Aliaksandra Yarosh.
Dai un'occhiata al tutorial su Python Object-Oriented Programming (OOP) di DataCamp.

