Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Python - Problema ereditarietà
Forum - Python - Problema ereditarietà

Avatar
LukeMilan (Normal User)
Rookie


Messaggi: 42
Iscritto: 30/05/2012

Segnala al moderatore
Postato alle 20:54
Sabato, 07/02/2015
Codice sorgente - presumibilmente Python

  1. class Tank():
  2.     def __init__(self):
  3.         self.x = 0
  4.         self.y = 0
  5.         def avanti(self):
  6.                 self.x+=50
  7.  
  8. class Player(Tank):
  9.         def start(self):
  10.                 Tank.avanti()
  11.  
  12. tank=Player()
  13. tank.start()



Errore:
Codice sorgente - presumibilmente Python

  1. Traceback (most recent call last):
  2.   File "test.py", line 13, in <module>
  3.     tank.start()
  4.   File "test.py", line 10, in start
  5.     Tank.avanti()
  6. AttributeError: class Tank has no attribute 'avanti'



Dove e perché ho sbagliato? Grazie mille! :k:

PM Quote
Avatar
dmr (Normal User)
Pro


Messaggi: 141
Iscritto: 04/01/2012

Segnala al moderatore
Postato alle 22:01
Sabato, 07/02/2015
Non uso python da un bel pò(purtroppo), prova ad indentare bene il metodo avanti di Tant al livello del costruttore.

Ultima modifica effettuata da dmr il 07/02/2015 alle 22:02
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 13:59
Domenica, 08/02/2015
Ciao!

Nel sorgente ci sono due errori; uno di indentazione ( la funzione avanti è interna al costruttore ).
L' altro sta nel richiamo del metodo avanti; va invocato tramite self.

Quindi, il sorgente corretto diventa:
Codice sorgente - presumibilmente Python

  1. class Tank:
  2.      def __init__(self):
  3.           """Costruttore"""
  4.           self.x=0
  5.           self.y=0
  6.          
  7.      def avanti(self):
  8.           """Avanzamento"""
  9.           self.x+=50
  10.  
  11. class Player(Tank):
  12.      def start(self):
  13.           """Partenza"""
  14.           self.avanti()
  15.  
  16. tank=Player()
  17. tank.start()


PM Quote
Avatar
LukeMilan (Normal User)
Rookie


Messaggi: 42
Iscritto: 30/05/2012

Segnala al moderatore
Postato alle 15:18
Lunedì, 09/02/2015
Testo quotato

Postato originariamente da Poggi Marco:

Ciao!

Nel sorgente ci sono due errori; uno di indentazione ( la funzione avanti è interna al costruttore ).
L' altro sta nel richiamo del metodo avanti; va invocato tramite self.

Quindi, il sorgente corretto diventa:
Codice sorgente - presumibilmente Python

  1. class Tank:
  2.      def __init__(self):
  3.           """Costruttore"""
  4.           self.x=0
  5.           self.y=0
  6.          
  7.      def avanti(self):
  8.           """Avanzamento"""
  9.           self.x+=50
  10.  
  11. class Player(Tank):
  12.      def start(self):
  13.           """Partenza"""
  14.           self.avanti()
  15.  
  16. tank=Player()
  17. tank.start()




Grazie mille!

PM Quote