我正在尝试使用deque库中的方法(来自集合)。但我收到错误“MyQueue实例没有属性'追加'”。但我确信deque有一种“附加”方法。导致此错误的原因是什么?
import copy
from collections import deque
class MyQueue:
def __init__(self):
self = deque()
def push(self, val):
self.append(val)
答案 0 :(得分:0)
您可以通过继承deque
:
from collections import deque
class MyQueue(deque):
def push(self, val):
self.append(val)
然后可以像这样使用:
>>> q = MyQueue()
>>> q.push(5)
>>> q
deque([5])
有关Python中的类和继承的更多信息,请参阅Python tutorial。
答案 1 :(得分:0)
您也可以使用deque
MyQueue
个实例来执行此操作
from collections import deque
class MyQueue(object):
def __init__(self, *args, **kwargs):
self._queue = deque(*args, **kwargs)
def push(self, value):
self._queue.append(value)
def pop(self):
return self._queue.pop()
如果你想在内部使用deque
但是有兴趣提供与deque
已经提供的null
相比的简化界面,这将是一个很好的方法。