我正在学习Python并创建一个简单的聊天机器人。假设我有一个具有主要功能的模块:
# bot.py
class QueueWrapper:
pass
wrapper = QueueWrapper() # also tried with dict
def main():
wrapper.queue = init_queue()
if __name__ == '__main__':
main()
考虑另一个模块,我想从bot模块中访问queue
,但在调用bot.py
模块后的一段时间调用了此模块中的函数:
# another_module.py
from bot import wrapper
def create_job():
wrapper.queue.do_smth() # <- error. object has no attribute ...
当我试图访问应该在wrapper
对象中的queue
时,我得到了一个错误,说wrapper
中没有queue
。但如果我在调试模式下在bot
模块上运行,我可以清楚地看到wrapper.queue
包含对象。但是当调用来自another_module.py
的create_job
函数时,它并不知道在wrapper
中有一个queue
在我看来,这里的问题是来自bot.py
的var queue
在main()
和init_queue()
完成工作之后被初始化,但是模块本身在那之前被导入了another_module
我做错了什么(可能遗漏了变量作用域的某些内容),如何在调用create_job()
时初始化我的wrapper.queue
提前谢谢
您可以使用property,以便
queue
属性在首次访问时自动初始化:相关问题 更多 >
编程相关推荐