[Python] Ereditarietà tra classi: un semplice esempio pratico da chiarire

Daniele Varrazzo piro a develer.com
Ven 21 Nov 2014 18:35:48 CET


On 2014-11-21 17:19, Marco Ippolito wrote:

> class Sub(Super):
>     def __init__(self, indirizzo,cosa_fa):
>         Super.__init__(self, nome, cognome, indirizzo)
>         self.cosa_fa = cosa_fa
...

> ora...

No, anche prima...


> se modifico la Sub class in questo modo:

> class Sub(Super):
>     def __init__(self, cosa_fa):
>         Super.__init__(self, nome, cognome, citta)
>         self.cosa_fa = cosa_fa


Ne' questo ne' quello di sopra sono corretti. Forse hai delle variabili 
globali che accidentalmente si chiamano nome e cognome ma non ne hai una 
che si chiama citta.

nome e cognome sono variabili locali: le devi passare al costruttore di 
sub, che nel primo caso potrebbe essere ad esempio:

     class Sub(Super):
         def __init__(self, nome, cognome, indirizzo, cosa_fa):
             Super.__init__(self, nome, cognome, indirizzo)
             self.cosa_fa = cosa_fa

Il secondo caso "funziona bene", ovvero ti da` un errore. Anche il primo 
dovrebbe.


-- Daniele


Maggiori informazioni sulla lista Python