【问题标题】:Collection which raises exception when exceeding its max size超过其最大大小时引发异常的集合
【发布时间】:2016-03-23 17:43:03
【问题描述】:

是否有一个集合在超过其最大大小属性时引发异常?

我知道它发生在 Queue.Queue 对象中,但是当我使用 collections.deque 时它没有引发异常,而是最后一个元素被覆盖了。

提前致谢!

【问题讨论】:

  • 您可以创建一个自定义包装器,继承最合适的集合或内置类型,添加一个长度属性并在通过覆盖方法添加新元素之前对其进行检查。
  • 当您说“收集”时,您是指双端队列吗?还是字典?或者Queue 有什么不符合您的需求的。

标签: python collections max-size


【解决方案1】:

您可以使用Queue,如果已满则引发queue.Full

>>> import queue
>>> q = queue.Queue(3)
>>> q.put_nowait(1)
>>> q.put_nowait(2)
>>> q.put_nowait(3)
>>> q.put_nowait(4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/ruediger/data/p3/Python-3.4.2/Lib/queue.py", line 187, in put_nowait
    return self.put(item, block=False)
  File "/Users/ruediger/data/p3/Python-3.4.2/Lib/queue.py", line 133, in put
    raise Full
queue.Full

【讨论】:

  • 谢谢丹尼尔。但我知道这种集合,我想知道是否有任何其他集合会引发类似的异常
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
  • 2020-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多