這只是一個問題,想知道爲什麼這不起作用。我已經想出了一個更好的方法,但我不知道爲什麼以前它不工作。爲什麼全球化一個布爾不工作,但全球化的字典
global mydict
mydict = {}
這似乎工作正常,並已使mydict字典全球。我甚至打印mydict,它的工作原理。但是,這樣做:
global bool
bool = False
似乎沒有工作。如果試圖在我的代碼中打印布爾,我得到:
UnboundLocalError: local variable 'bool' referenced before assignment
那麼,爲什麼它的字典而不是布爾值呢?
哦,還有,如果有人想知道我是怎麼想出更好的辦法的,那麼我就通過做self.bool = False來初始化一個類並在課堂上做出全局布爾值。我是從這樣一個問題:Making all variables global
編輯:按照要求,我會發布必要的代碼:
import chatbot
global mydict
mydict = {}
global haveamessage
haveamessage = False
class MyBot(chatbot.ChatBot):
def __init__(self, username, password, site):
chatbot.ChatBot.__init__(self,username,password,site)
def on_message(self, c, e):
print mydict
print haveamessage
if __name__ == '__main__':
bot = MyBot("MyUsername", "MyPassword", "MySite")
bot.start()
我會盡力解釋這個代碼。 chatbot模塊非常適合用戶在Wikia上創建維基上的漫遊器,該公司允許任何人編輯維基。在wiki上有一個聊天擴展,用戶可以與之通話。該腳本允許機器人加入聊天和執行命令。當某人在聊天中發佈內容時,on_message()會關閉。
所以這個打印:
{}
Traceback (most recent call last):
File "file.py", line 146, in <module>
bot.start()
File "/Library/Python/2.7/site-packages/chatbot.py", line 371, in start
self.on_message(self.c, e)
File "file.py", line 12, in on_message
print haveamessage
UnboundLocalError: local variable 'haveamessage' referenced before assignment
我想澄清的原因,這是不生產的所有的你的錯誤,因爲你不是在Wikia的聊天。函數on_message()僅在某人在聊天中發佈內容時運行。例如,我可能有:
def on_message(self, c, e):
if e.text == 'hello': # e.text is what a user posts in the chat. e = event
c.send('Hello!') # c.send simply sends back a message in the chat. c = connection
所以當有人發帖在聊天你好,機器帖子回來你好!
請發佈一個可重現問題的小型可運行代碼示例。 – sepp2k
@Haidro當我運行該代碼時,出現導入錯誤。修改該代碼以刪除錯誤之後,沒有任何反應。在添加一些代碼來實例化MyBot並在其上調用on_message之後,它會打印出{}和False。您聲稱獲得的錯誤消息從未發生。 – sepp2k
我已經添加了我的代碼,並且出現了錯誤。 – TerryA