0

如果我想创建一个有边界的队列,但我想在函数内部为队列创建边界,而不是使用 Class BoundedQueue.Queue(maxsize = 4),该怎么办?(有关最大绑定队列的信息:http: //docs.python.org/2/library/queue.html

有什么建议么?

这是我的代码;capacity是最大界限。

class BoundedQueue: 
    # Constructor, which creates a new empty queue, with user-specified capacity:
    def __init__(self, capacity):
        self.items = []
        assert(capacity >= 0), "not positive"

        try:
            capacity = int(capacity)
        except TypeError as inst:
            print("Error", inst.args)
        except:
            print("error")
        else:
            itemmax = capacity
4

1 回答 1

0

无论您是创建自己的BoundedQueue类还是子类化现有的类,您似乎缺少的是您需要将最大大小存储在类的__init__()(即self._maxsize = capacity)中,然后在队列的任何其他方法中使用它来添加元素以防止他们的数量不会被超过。

为此,您还需要跟踪其中有多少东西被添加和删除,这意味着您可能还需要self._cursize该值的属性,该属性也应该在构造函数中初始化。如果您将基类子类化,它可能已经为您跟踪了它,因此您可以改用它。

“问:Python 还缺少哪些其他主要类型?”中有一些(无界)队列实现的示例。Peter Norvig 的The Python IAQ: Infrequently Answered Questions网站的部分,如果您决定创建自己的类,您可能会发现它很有用。

于 2013-02-12T22:30:19.277 回答