调用函数时,Python警告“'str'不可调用”

时间:2012-10-26 16:41:18

标签: python python-3.x pycharm

我在下面的行上收到警告:'str'对象不可调用。

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

由于

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']

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:2)

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

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