저는 Python을 배우고 간단한 채팅 봇을 만들고 있습니다.다른 모듈에서 변경된 변수에 액세스하십시오.
# bot.py
class QueueWrapper:
pass
wrapper = QueueWrapper() # also tried with dict
def main():
wrapper.queue = init_queue()
if __name__ == '__main__':
main()
그리고 내가 봇 모듈에서 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
에 객체가 있다는 것을 알 수 있습니다. 그러나 create_job
함수가 another_module.py
에서 호출 될 경우 queue
이 wrapper
에 있음을 알 수 없습니다.
여기 내 생각에 문제는 main()
및 init_queue()
이 작업을 완료했지만 모듈 자체가 그 전에 another_module
로 가져 도착 후 bot.py
에서 VAR queue
이 초기화됩니다 있다는 것입니다.
무엇이 잘못 되었습니까 (변수 범위에 대해 빠진 것일 수 있습니다) create_job()
이 호출 될 때 wrapper.queue
을 어떻게 초기화 할 수 있습니까?
미리 감사드립니다. queue
속성이 자동으로 초기화되도록이 처음 액세스 할 때
__main __- 부분은 수입에 실행되지 않습니다. 'wrapper.queue = init_queue()'를 항상 설정하고 싶다면'wrapper = ... ' –
...의 정의 아래에 배치하거나 QueueWrapper의'__init__' 메소드에 넣어야합니다. –
내 대답을 시도 했습니까? 문제가 해결되지 않으면 이유를 설명해 주시면 개선하기 위해 노력하겠습니다. – ekhumoro