2012-10-26 65 views
1

我在下面的行上發出警告,聲明:'str'對象不可調用。當調用函數時,Python警告「'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'] 
+1

什麼是'listAction'?另外,修復你的縮進。 –

+0

糟糕對不起......我縮進並添加了listAction列表.-謝謝 – SkyeBoniwell

+0

這當然與Python 2.7 vs 3.3無關。更新後的效果。 –

回答

6

這實際上是比我最初想象的更復雜,因爲你有函數名稱爲self.action變量名爲self.action,所以你的代碼很混亂。第一次調用DefineAction.action()時,用字符串覆蓋該函數,所以第二次調用它時,會出現此錯誤。

只要給你的函數和變量不同的名稱,它應該工作正常。

2

在功能action中,您將self.action設置爲字符串。這意味着當您第一次撥打Action.action()時,它將屬性Action.action設置爲字符串,因此下次您撥打Action.action()時,您將看到此錯誤。

只需爲屬性選擇一個不同的名稱,確保它與方法的名稱不匹配。您可以使用DefineAction.action(Action)仍然調用原始的action()方法,但這是不好的做法。

相關問題