实例没有属性 - Deque Library
Instance has no attribute - Deque Library
我正在尝试使用双端队列库(来自集合)中的方法。但是我收到错误 "MyQueue instance has no attribute 'append'"。但我确定 deque 有一个 "append" 方法。是什么导致了这个错误?
import copy
from collections import deque
class MyQueue:
def __init__(self):
self = deque()
def push(self, val):
self.append(val)
你可以通过继承 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。
您也可以通过使用 MyQueue
:
包装一个 deque
实例来实现
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
已经提供的界面更简单的界面,这将是一个很好的方法。
我正在尝试使用双端队列库(来自集合)中的方法。但是我收到错误 "MyQueue instance has no attribute 'append'"。但我确定 deque 有一个 "append" 方法。是什么导致了这个错误?
import copy
from collections import deque
class MyQueue:
def __init__(self):
self = deque()
def push(self, val):
self.append(val)
你可以通过继承 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。
您也可以通过使用 MyQueue
:
deque
实例来实现
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
已经提供的界面更简单的界面,这将是一个很好的方法。