Le sottoclassi in python
Nel linguaggio python una sottoclasse ( classe derivata ) è una classe che appartiene a un'altra classe detta classe base o classe primaria.
class Nomesottoclasse(Classebase):
codice
A cosa serve la sottoclasse?
Il punto di forza delle sottoclassi è l'ereditarietà.
Una sottoclasse eredita tutte le proprietà dalla classe base. In questo modo, evito di doverle documentare più volte.
Un esempio pratico di sottoclasse
Per spiegare il funzionamento della sottoclassi in python faccio un semplice esempio pratico.
Creo la classe base A() con una proprietà.
- class A:
- nazione="Italia"
Poi creo la classe derivata B(A).
La sottoclasse ha un'altra proprietà (regione).
- class B(A):
- regione="Lazio"
Tra parentesi indico la classe base (A) a cui appartiene la sottoclasse B. Questo vuol dire che la classe B eredita automaticamente tutte le proprietà della classe base A.
Ad esempio, digito sull'interprete python
B.nazione
L'interprete python legge la proprietà di B e visualizza
Italia
Pur non avendola, la sottoclasse B ha ereditato la proprietà "nazione" dalla classe base A.
E così via.
Come creare una classe derivata
Questo esempio è un po' più complesso rispetto al precedente, perché include anche i metodi, ma il principio di funzionamento è sempre lo stesso.
Creo la classe base Persona().
Gli oggetti che appartengono alla classe Persona() hanno due proprietà: Nome e Cognome.
- 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)
Poi creo la sottoclasse Studente().
Tra parentesi specifico la classe base di riferimento ossia Persona.
- class Studente(Persona):
- '''Classe che identifica uno studente.'''
- def __init__(self, Nome, Cognome, Scuola):
- self.Scuola = Scuola
- Persona.__init__(self, Nome, Cognome)
- def __str__(self):
- return Persona.__str__(self) + "\nScuola:" + str(self.Scuola)
La sottoclasse Studente ha una proprietà specifica (Scuola) ed eredita le proprietà Nome e Cognome dalla classe base Persona.
Per fare una prova aggiungo un oggetto alla classe Studente()
eric = Studente("Eric", "Idle", "British School")
Poi consulto l'oggetto eric
eric
L'interprete python restituisce le seguenti informazioni
Nome: Eric
Cognome: Idle
Scuola:British School
La sottoclasse Studente() ha ereditato i metodi della classe base Persona()
E così via.