实例没有属性 - Deque Library

时间:2015-09-09 00:30:55

标签: python class collections attributes queue

我正在尝试使用deque库中的方法(来自集合)。但我收到错误“MyQueue实例没有属性'追加'”。但我确信deque有一种“附加”方法。导致此错误的原因是什么?

import copy
from collections import deque

class MyQueue:
    def __init__(self):
        self = deque()
    def push(self, val):
        self.append(val)

2 个答案:

答案 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相比的简化界面,这将是一个很好的方法。