2016-01-23 1 views
-2

J'ai déjà googlé cette erreur et je n'ai pas compris ce que c'est. J'essaie de faire un jeu simple avec des classes et la classe ennemie que je n'ai pas me permettra d'appeler la méthode d'attaque.Objet Python 'int' non appelable

C'est la ligne, il dit l'erreur est:

enemy.attack(player1) 
if player1.dead == True: 
    print "You have lost" 

Et ceci est la méthode:

def attack(self, player): 
    #defend = randint(0,10) 

    damage = randint(0, self.strength) 
    if damage == 0: 
     print "You missed" 
    elif damage < self.strength: 
     print "Hit for", damage,"damage." 
     player.health = player.health - damage 
    elif damage == self.strength: 
     print "Critical hit!" 
     player.health = player.health - (damage + 2) 
    player.check_dead(player) 

Si vous avez besoin de plus d'informations sur le code s'il vous plaît demander. Je ne suis pas sûr de l'information que je suis censé vous donner parce que je ne comprends pas l'erreur.

Erreur dans la console:

Your health: 100 
Attack or Heal attack 
Hit for 3 damage. 
97 

Traceback (most recent call last): 
    File "E:\Computing\player.py", line 119, in <module> 
    enemy.attack() 
TypeError: 'int' object is not callable 
+1

s'il vous plaît poster la traceback complète (l'erreur dans la console) –

+0

Poster la source avec la classe ennemi et joueur s'il vous plaît .. –

Répondre

6

À un certain moment vous avez attribué une valeur int à enemy.attack, puis a essayé d'appeler enemy.attack() en fonction.

Rechercher une ligne comme xyz.attack = {something} et examiner ce que {something} est.


technique de débogage avancée - faire enemy.attack une propriété en lecture seule qui retourne une fonction qui ne fait rien, ce

class enemy: 
    @property 
    def attack(self, player): 
     def null_fn(): 
      pass 
     return null_fn 

... maintenant courir votre code lancera une AttributeError pointant sur la ligne où vous essayez d'attribuer une valeur à attack ;-)

+0

Je lui avais donné un instanc La variable appelée attaque. –