AttributeError:队列实例没有属性'_empty'

rob*_*sch 0 python queue attributeerror

客户使用Python 2.5.5使用我的软件出现此错误.怎么会这样?_empty是否已从队列中消失?我根本不明白这一点.我没有从队列继承,只有Queue类的正常实例.在我的机器上似乎一切正常,但是,在客户的机器上出现了错误.任何人都可以给我一些建议,问题是什么?

这个问题发生在这里:

import Queue

self.requests.mutex.acquire()
allCount = self.requests._qsize()
while not self.requests._empty():
    try:
        (sock, addr, _) = self.requests._get()
        # ... do some things
self.requests.mutex.release()
Run Code Online (Sandbox Code Playgroud)

之前,队列已初始化

self.requests = Queue(self.reqQLen)
Run Code Online (Sandbox Code Playgroud)

并且这些队列方法也用在模块中:put_nowait,qsize,get.队列用于多线程的上下文中.这可能是原因吗?

我想知道:错误消息告诉我变量请求被识别为队列实例,但属性_empty不存在.但是,这是Queue类中的常规方法.

小智 5

我对此并不是很熟悉(我不知道你使用的是什么版本的Python),但是看看文档我没有提到_empty属性,只提到了一个empty()方法.由于前导下划线用于表示私有属性,因此我认为它的存在不是标准化的,而是依赖于实现的,并且使用该empty()方法将是正确的解决方案.

  • @Robert:领先的下划线*喊叫"如果你使用它并且它改变/消失,那就是你的错".私人的东西是私密的,因为外界的人都不应该知道(让我们使用)它. (5认同)