【问题标题】:Python warning "'str' is not callable" when calling a function调用函数时Python警告“'str'不可调用”
【发布时间】:2012-10-26 16:41:17
【问题描述】:

我在下面的行中收到一条警告,指出:'str' object is not callable。

有什么办法可以让警告消失吗?

谢谢

Action.action()

这里是代码块:

Action = DefineAction()
Action.action()


class DefineAction:
    def action(self):
        self.action = listAction[generateRandomNumber(0,4)]
        return self.action

这里是 listAction:

listAction =['walks','runs','jaunts','ambles','dashes','sprints']

【问题讨论】:

  • listAction 是什么?另外,修正你的缩进。
  • 哎呀抱歉...我缩进并添加了 listAction 列表。-谢谢
  • 这当然与 Python 2.7 vs 3.3 无关。更新到这个效果。

标签: python python-3.x pycharm


【解决方案1】:

这实际上比我最初想象的要复杂,因为你有一个名为self.action 的函数一个名为self.action 的变量,所以你的代码很混乱。第一次调用DefineAction.action()时,会用字符串覆盖函数,所以第二次调用时,会出现此错误。

只需给你的函数和变量起不同的名字,它应该可以正常工作。

【讨论】:

    【解决方案2】:

    在函数action 中,您将self.action 设置为一个字符串。这意味着当你第一次调用Action.action() 时,它会将属性Action.action 设置为一个字符串,所以下次你调用Action.action() 时你会看到这个错误。

    只需为您的属性选择一个不同的名称,确保它与方法的名称不匹配。您可以使用 DefineAction.action(Action) 仍然调用原始的 action() 方法,但这是不好的做法。

    【讨论】:

      猜你喜欢
      • 2013-05-05
      • 2020-09-11
      • 2013-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-09
      • 2015-06-07
      相关资源
      最近更新 更多