【问题标题】:'int' object is not callable when called method of instance class [duplicate]调用实例类的方法时,“int”对象不可调用[重复]
【发布时间】:2020-05-31 09:08:51
【问题描述】:

我不知道如何解决它,但我认为我的代码很清楚。我是初学者级别的python学习者。

在这里,我创建了一个具有 attack 方法的类 Hero。但是,当我调用它所说的方法时,出现错误'int' object is not callable。

class Hero(object):
    def __init__(self, name, hp, att_pwr, def_pwr ):
      self.name = name
      self.health = hp
      self.attack = att_pwr
      self.defense = def_pwr

    def attack(self):
      print(self.name + ' is attacking')


Hero1 = Hero('Arif', 75, 50, 40)
Hero1.attack()

【问题讨论】:

  • 您使用同名attack 作为属性和类方法。

标签: python


【解决方案1】:

仔细看,你有一个名为attack 的属性和一个方法。该类试图调用属性而不是方法。这是有效的课程!

class Hero:
    def __init__(self, name, hp, att_pwr, def_pwr):
        self.name = name
        self.hp = hp
        self.att_pwr = att_pwr
        self.def_pwr = def_pwr

    def attack(self):
        return self.name + " is attacking"


Hero1 = Hero("Arif", 75, 50, 40)
Hero1.attack()

打印出来:

>> 'Arif is attacking'

【讨论】:

  • 感谢您的帮助,我还是个初学者,所以我不知道它的工作原理。你能和我分享一下数据科学的 Python 练习吗?也许是链接或网络。这对我很有帮助
【解决方案2】:

这是因为您有一个名为attack 的属性以及一个同名的方法。也许您应该将attack 属性重命名为其他名称,例如attack_points

class Hero(object):
    def __init__(self, name, hp, att_pwr, def_pwr ):
        self.name = name
        self.health = hp
        self.attack_points = att_pwr
        self.defense = def_pwr

    def attack(self):
        print(self.name + ' is attacking')


Hero1 = Hero('Arif', 75, 50, 40)
Hero1.attack()

【讨论】:

    【解决方案3】:

    这是一个对象类,攻击是一个属性,所以你将使用 -

    Hero1.attack
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-28
      • 1970-01-01
      • 2012-11-04
      • 2018-03-09
      相关资源
      最近更新 更多