如果我想创建一个带有绑定的队列,但是我想在函数内部创建队列的边界而不是使用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
答案 0 :(得分:0)
无论您是创建自己的BoundedQueue
类还是创建现有的类,您似乎缺少的是您需要在类__init__()
中存储最大大小(即self._maxsize = capacity
然后在任何Queue的其他方法中使用它,这些方法添加元素以防止超出它们的数量。
为了做到这一点,你还需要跟踪添加和删除它们的内容,这意味着你可能还需要一个self._cursize
属性来获取该值也应该在构造函数中初始化。如果你是一个基类的子类,它可能已经为你跟踪,所以你可以改用它。
在“问:Python中缺少哪些其他主要类型?”中有一些(无界)队列实现的例子。 Peter Norvig的The Python IAQ: Infrequently Answered Questions网站部分,如果您决定创建自己的课程,可能会觉得很有用。