2012-04-10 19 views
-3

這裏是我的腳本,http://pastebin.com/zgRrBX0U「‘廉政’對象不是可調用的」錯誤

對於參考這是肖捷思銳的「學習Python中艱難地」的EX36的腳本。 我試圖創建一個基於文本的冒險,設計從塞爾達傳說的第一級。

但是當我開始進入程序時,我遇到了一個問題。它的工作原理是讓你從主房間開始。但不管朝哪個方向走,都會有錯誤的說法。 「'int'對象不可調用。'我無法弄清楚這是什麼意思搜索。或者看看pydocs。任何幫助將不勝感激。

+7

請將相關的代碼放入您的問題的正文中。 – 2012-04-10 22:49:34

+0

您可能還想花一些時間檢修您的設計。對每個房間,移動設備和敵人的每個「彩色描述」進行硬編碼都不能實現良好的代碼重用,會讓你的代碼變得活靈活現,難以閱讀。 – hexparrot 2012-04-10 22:52:28

+0

Python不是您使用的第一種編程語言,是嗎? – 2012-04-10 23:02:21

回答

0

line 47:

def roomBA(key, life, door_open, roomBA, roomDA): 

您正在此處定義一個名爲roomBA的函數。

行129:

roomBA = 0 

在這裏,你已經改變的Roomba是數字0了。

因此,您定義的原始功能會丟失。你不再有一個名字可以用來打電話了。

上線132:

roomCA(key, life, door_open, roomBA, roomDA) 

在這裏,您呼叫的功能roomCA。除此之外,此功能會要求玩家指示方向,然後嘗試呼叫相應的房間功能。

我輸入了西,所以我們試圖調用變量roomBA引用的函數(第17行)。但是,哦,它不再是一個功能。它是0.因此,你是錯誤的。

這是怎麼回事,你有很多函數名稱和變量名稱之間的衝突。當然,roomXX是代表遊戲中每個房間的函數。然後,你有狀態變量(現在,它也被命名爲roomXX)。看起來這些變量是用來跟蹤你之前是否進入了一個房間。既然你的函數和狀態變量被命名爲相同的東西,你正在做各種意想不到的事情。

如上帖子中提到,你可以刪除行129和130獲得的代碼運行;但是,您可能需要更好地理解基礎知識。下面是一個開始的地方:

http://en.wikipedia.org/wiki/Scope_%28computer_science%29

2

您定義roomBAroomDA作爲函數,然後......你將它們綁定到整數。它是行不通的。

+0

我多麼愚蠢,我會redit – 2012-04-10 22:55:03

1

刪除線129和130,它會工作,爲伊格納西奧說。

Python中的「通知」通常的功能。該消息意味着你在處理數字(「 int「)就好像它是一個函數(一個」可調用的「),所以Python不知道該怎麼做,所以它停止了。

+0

我現在已經解決了這個問題,對我來說很愚蠢。它工作正常,我可以繼續這個小項目,謝謝。 – 2012-04-10 23:01:56

0

一個錯誤說。 「'int'對象不可調用。'我無法弄清楚這是什麼意思搜索。

你的意思是通過了解語言的基礎知識和英語來了解這意味着什麼。

錯誤提示'int'對象不可調用。調用是你對函數(和類似的東西)所做的事情,所以你有一個int,你認爲你有一個函數(或類似的東西)。這是因爲你已經將一個函數名重新設置爲一個int。

在Python,你應該知道現在:

  1. 一切都是對象,甚至功能。

  2. 在運行時間之前不會檢查類型。

  3. 值有類型,而不是變量(名稱,真的)。

所以沒有受到什麼阻礙你的寫作:

function a(): pass 
a = 1 

第一行創建一個函數對象,並將其綁定到名稱a。第二行將整數1綁定到名稱a。這取代了舊的綁定,所以a不再是函數的名稱。

相關問題