Python警告“';str';“不可赎回”;调用函数时

Python警告“';str';“不可赎回”;调用函数时,python,python-3.x,pycharm,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 以下是行动清单: li

我在下面的一行收到一条警告:“str”对象不可调用

我能做些什么让警告消失吗

谢谢

Action.action()
以下是代码块:

Action = DefineAction()
Action.action()


class DefineAction:
    def action(self):
        self.action = listAction[generateRandomNumber(0,4)]
        return self.action
以下是行动清单:

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

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


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

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


只需为函数和变量指定不同的名称,它就可以正常工作。

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


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

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


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

什么是
listAction
?另外,修复缩进。哦,对不起……我缩进并添加了listAction列表。-谢谢。这当然与Python 2.7 vs 3.3无关。更新了这个效果。什么是
listAction
?另外,修复缩进。哦,对不起……我缩进并添加了listAction列表。-谢谢。这当然与Python 2.7 vs 3.3无关。对此进行了更新。