2016-01-23 77 views
-2

我已经使用了这个错误,并且不明白它是什么。我正在尝试做一个简单的游戏,并且我不允许我称之为攻击方法。Python class'int'object not callable

这是该行它说的错误是:

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

这是方法:

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) 

如果您需要了解代码请询问更多的信息。我不确定我打算给你什么信息,因为我不明白错误。

错误控制台:

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

请发布完整回溯(控制台中的错误) –

+0

请将类别敌人和播放器发布到源.. –

回答

6

在您指定的intenemy.attack一些点,然后试着拨打enemy.attack()的功能。

找一条线,如xyz.attack = {something},并仔细检查{something}是什么。


高级调试技术 - 使enemy.attack只读属性,它返回一个什么都不做的功能,即

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

...现在运行你的代码将抛出一个AttributeError指着其中一行您尝试将值分配给attack ;-)

+0

我已经给它一个instanc e变量称为攻击。 –