Le classi in python
Il linguaggio python consente l'utilizzo delle classi.
Cos'è una classe?
E' una caratteristica della programmazione orientata agli oggetti (OOP).
L'uso delle classi evita la ripetizione delle stesse informazioni su più oggetti ed è più efficiente rispetto alla vecchia programmazione procedurale.
Nota Mentre nella programmazione procedurale ( tradizionale ) occorre definire le proprietà di ogni oggetto, nella programmazione OOP si crea una classe con le proprietà e si associano gli oggetti alla classe . In questo modo si evita di scriverle per ogni oggetto.
L'ereditarietà delle classi
L'ereditarietà è uno dei punti di forza della programmazione a oggetti e Python non fa eccezioni.
Quando una classe derivata viene associata a un'altra classe ( base class ), la classe derivata eredita il comportamento della classe base a cui aggiunge delle funzionalità proprie.
Come creare una classe in python
Per definire una classe in python uso questa sintassi:
class nomeclasse:
contenuto
Un esempio pratico
Creo la classe Persona
- class Persona():
- '''Classe che identifica le persone.'''
- def __init__(self, Nome, Cognome):
- self.Nome = Nome
- self.Cognome = Cognome
- def __str__(self):
- return "Nome: " + str(self.Nome) + "\nCognome: " + str(self.Cognome)
Questa classe identifica le persone.
E' composta da due metodi:
- __init__ definisce le proprietà degli oggetti (self) della classe. In questo esempio ogni oggetto della classe Persona() ha due proprietà:
- Nome
- Cognome
- __str__ ritorna una rappresentazione sotto forma di stringa dell'oggetto assegnato alla classe Persona().
Cosa sono i metodi? I metodi sono simili alle funzioni ma sono definiti all'interno di una classe. Inoltre, per invocare un metodo si utilizza una sintassi diversa rispetto alle funzioni.
Come associare un oggetto alla classe
Per associare un oggetto alla classe digito:
eric = Persona("Eric", "Idle")
Il primo argomento ("Eric") è associato alla prima proprietà della classe Persona ossia Nome.
Il secondo argomento ("Idle") è invece associato alla seconda proprietà ossia Cognome.
A questo punto, visualizzo il contenuto della variabile eric con l'istruzione print.
print(eric)
L'interprete python restituisce questo risultato
Nome: Eric
Cognome: Idle
Il programma visualizza le informazioni insieme alle proprietà della classe.
In particolar modo, le rappresenta utilizzando la stringa definita con il metodo __init__della classe.
L'oggetto ha ereditato le proprietà della classe
In questo modo evito di doverle specificare per qualsiasi oggetto che associo alla classe.
Come leggere le proprietà di un oggetto
Posso accedere alle singole proprietà dell'oggetto indicandole come attributo.
La proprietà vanno indicate alla destra del nome dell'oggetto e separate da un punto.
oggetto.proprietà
Esempio
In questo esempio digito sulla console
eric.Nome
L'interprete python legge la variabile (eric) restituisce soltanto l'informazione associata alla proprietà Nome.
Eric
Non restituisce le altre proprietà.
In questo modo posso leggere o modificare le singole informazioni di un oggetto senza modificare le altre.
E così via.