2
我試圖讓我的繪圖程序(用python寫pygame)的用戶重命名所選對象,然後能夠通過他們的名字通過實時解釋器訪問它們。以下是所有可繪製對象的基類的一種方法。當這段代碼運行時,我沒有得到任何錯誤,但是當我嘗試通過它的新名稱訪問對象時,我被告知具有該名稱的變量沒有被定義。 任何想法,爲什麼這可能是?使用eval在全局範圍創建新變量
def rename(self,newName):
"""
Gives this drawable a new name by which the user my reference it in
code
"""
#Create a new variable in the global scope
command = 'global ' + newName + '\n'
#Tie it to me
command += newName + ' = self' + '\n'
#If I already had a name, I'll remove this reference
if self.name != None:
command += 'del ' + self.name
#Execute the command
exec(command)
#Make this adjustment internally
self.name = newName
這似乎是爲我工作。感謝你的幫助,rodrigo! – hedgehogrider
雖然,我仍然不明白exec爲什麼不起作用。它不能與exec(command,globals())一起工作。任何文獻,我可以閱讀這個? – hedgehogrider
嗯,經過一些測試,看起來我錯了'exec'使用另一個'globals'。其實,一些簡單的例子對我來說很有效......但是,我覺得在刪除之前你並沒有添加''global'+ self.name',它並沒有失敗,所以我猜測你是在刪除插入之後立即使用相同的名稱! – rodrigo