从队列前面取出对象
dequeue object from front of queue
我正在尝试在我的 tkinter 程序中从队列的前面取出一个随机形状。我尝试了 is_empty()
方法,但似乎出现错误。
>>> AttributeError: 'Queue' object has no attribute 'pop'.
如有帮助将不胜感激!
这是队列 class 我正在使用
class Queue:
def __init__(self):
self.items = []
def is_empty(self):
return self.items == []
def size(self):
return len(self.items)
def enqueue(self, item):
self.items.insert(0, item)
def dequeue(self):
return self.items.pop(0)
def peek(self):
return self.items[0]
class直肠:
def __init__(self, height=60, width=80 ):
self.height = height
self.width = width
self.create_buttons()
self.canvas = Canvas(root)
self.canvas.pack()
self.queue = Queue()
def remove_triangle(self):
if not self.queue.is_empty():
self.canvas.delete(self.queue.pop())
我正在查看 Queue 的 Python 文档 (see here),但我没有看到名为 pop 的方法。也许这就是你错误的原因。但是,我能看到的是以下方法:
Queue.get([块[ 超时]])
从队列中删除并 return 一个项目。如果可选参数 block 为 true 且超时为 None(默认值),则在必要时阻止直到项目可用。如果超时是正数,它最多会阻塞超时秒数,如果在该时间内没有可用的项目,则会引发 Empty 异常。否则(块为假),return 一个项目,如果一个项目立即可用,否则引发 Empty 异常(在这种情况下忽略超时)。
版本 2.3 中的新功能:超时参数。
也许它符合你的目的。
你不需要写你自己的class。 Python 在其标准库中提供了一个 Queue
数据结构。您可以使用来自 collections
.
的 deque
数据结构
from collections import deque
q = deque()
q.append(5)
print q.pop()
请参阅 deque
here 的文档。
对于您的情况,只需创建一个 deque
对象而不是 Queue
对象。
from collections import deque
class Recta:
def __init__(self, height=60, width=80 ):
self.height = height
self.width = width
self.create_buttons()
self.canvas = Canvas(root)
self.canvas.pack()
self.queue = deque()
def remove_triangle(self):
if not self.queue.is_empty():
self.canvas.delete(self.queue.pop())
我正在尝试在我的 tkinter 程序中从队列的前面取出一个随机形状。我尝试了 is_empty()
方法,但似乎出现错误。
>>> AttributeError: 'Queue' object has no attribute 'pop'.
如有帮助将不胜感激!
这是队列 class 我正在使用
class Queue:
def __init__(self):
self.items = []
def is_empty(self):
return self.items == []
def size(self):
return len(self.items)
def enqueue(self, item):
self.items.insert(0, item)
def dequeue(self):
return self.items.pop(0)
def peek(self):
return self.items[0]
class直肠:
def __init__(self, height=60, width=80 ):
self.height = height
self.width = width
self.create_buttons()
self.canvas = Canvas(root)
self.canvas.pack()
self.queue = Queue()
def remove_triangle(self):
if not self.queue.is_empty():
self.canvas.delete(self.queue.pop())
我正在查看 Queue 的 Python 文档 (see here),但我没有看到名为 pop 的方法。也许这就是你错误的原因。但是,我能看到的是以下方法:
Queue.get([块[ 超时]]) 从队列中删除并 return 一个项目。如果可选参数 block 为 true 且超时为 None(默认值),则在必要时阻止直到项目可用。如果超时是正数,它最多会阻塞超时秒数,如果在该时间内没有可用的项目,则会引发 Empty 异常。否则(块为假),return 一个项目,如果一个项目立即可用,否则引发 Empty 异常(在这种情况下忽略超时)。
版本 2.3 中的新功能:超时参数。
也许它符合你的目的。
你不需要写你自己的class。 Python 在其标准库中提供了一个 Queue
数据结构。您可以使用来自 collections
.
deque
数据结构
from collections import deque
q = deque()
q.append(5)
print q.pop()
请参阅 deque
here 的文档。
对于您的情况,只需创建一个 deque
对象而不是 Queue
对象。
from collections import deque
class Recta:
def __init__(self, height=60, width=80 ):
self.height = height
self.width = width
self.create_buttons()
self.canvas = Canvas(root)
self.canvas.pack()
self.queue = deque()
def remove_triangle(self):
if not self.queue.is_empty():
self.canvas.delete(self.queue.pop())