Last Updated on 2021-07-05 by Clay
事情是這樣的:今天,我在嘗試著使用 Python 自己寫一個快速進行前處理的程式,寫好之後順手將其包裝成一個 Class 方便以後的擴充。但是就在我包裝好後一測試,就有了以下這樣的報錯:
TypeError: 'str' object is not callable
沒道理啊!一直以來我經常地將程式碼在最後 Clean Code、重構的時候將其封裝成 Python 中的 Class,流程上不應該有錯啊。
查找了網路上大家遇到這個報錯的原因,直到看見了國外某論壇的討論才突然領悟到大概是哪裡寫錯了。
國外論壇發文者的錯誤訊息跟我同樣,底下有人回覆說,這是因為『調用了無法對調用的對象函式』。
我一聽,馬上重頭檢查一遍我的程式碼,終於發現了問題。
我在前處理類別初始化的時候,定義了 "self.tokenizer" 這個變數當作我『斷詞器』的選擇類別,然後,又在底下進行斷詞的部份,再次使用了 "self.tokenizer()" 當作處理斷詞的函式。
簡單來講,我命名撞車了,這個真的是一不小心就很容易犯的錯誤。
所以我認為在有了這樣的錯誤訊息時,比較穩妥的解決方法就是率先檢查一遍自己程式的變數命名,看看是否有不小心撞名的部份。