
L'attributo __base__ in Python
In Python l'attributo `__base__` delle classi indica il nome dela classe madre dalla quale una determinata classe figlia eredita direttamente.
__base__
Questo attributo ti può essere utile quando lavori con l'ereditarietà in Python e si desidera esaminare la gerarchia delle classi.
Capire la gerarchia delle classi è fondamentale per sfruttare al meglio l'ereditarietà e il polimorfismo in Python.
L'ereditarietà permette di creare nuove classi che ereditano le proprietà e i metodi di classi esistenti, favorendo il riuso del codice e una struttura più organizzata.
Vediamo alcuni esempi pratici per chiarire come funziona `__base__`.
Definisci due classi `Cane` e `Animale`.
class Animale:
def parla(self):
pass
class Cane(Animale):
def parla(self):
return "Bau bau!"
In questo esempio, `Cane` eredita da `Animale`.
Usando l'attributo `Cane.__base__` puoi vedere che la classe base diretta di `Cane` è `Animale`.
print(Cane.__base__)
<class '__main__.Animale'>
Vediamo un altro esempio con una gerarchia un po' più complessa
class EssereVivente:
def esisti(self):
return "Io esisto!"
class Animale(EssereVivente):
def parla(self):
pass
class Cane(Animale):
def parla(self):
return "Bau bau!"
In questo caso la classe `Cane` eredita da `Animale`, che a sua volta eredita da `EssereVivente`.
Tramite l'attributo `__base__` puoi tracciare questa gerarchia passo dopo passo.
print(Animale.__base__)
<class '__main__.EssereVivente'>
E ovviamente
print(Cane.__base__)
<class '__main__.Animale'>
In alternativa, puoi anche creare un ciclo per risalire le classi dalla classe figlia alla classe madre.
def stampa_gerarchia(classe):
while classe:
print(classe)
classe = classe.__base__
stampa_gerarchia(Cane)
Questo piccolo script iterativo stampa la gerarchia delle classi partendo da `Cane` fino a raggiungere il livello più alto della gerarchia che solitamente è `object` in Python.
<class '__main__.Cane'>
<class '__main__.Animale'>
<class '__main__.EssereVivente'>
<class 'object'>
In conclusione l'attributo `__base__` ti permette di esplorare la gerarchia delle classi in Python e di capire meglio l'ereditarietà delle classi. E' particolarmente utile quando lavori con framework o librerie complesse che utilizzano l'ereditarietà in modo estensivo.
Spero che questa guida ti abbia aiutato a chiarire il concetto.