【发布时间】:2016-04-06 03:36:03
【问题描述】:
class TailDeque(collections.deque):
'''Implementation of deque with limited maxlen support for Python 2.5.'''
def __init__(self, iterable=None, maxlen=-1):
super(TailDeque, self).__init__([])
self.maxlen = maxlen
if iterable is not None:
self.extend(iterable)
def extend(self, iterable):
for item in iterable:
self.append(item)
def extendleft(self, iterable):
for item in iterable:
self.appendleft(item)
def appendleft(self, item):
if len(self) == self.maxlen:
self.pop()
super(TailDeque, self).appendleft(item)
def append(self, item):
if len(self) == self.maxlen:
self.popleft()
super(TailDeque, self).append(item)
logQueue = TailDeque(maxlen=20)
有人可以解释一下并告诉我如何为 python 3.4 执行此操作吗?
我总是得到
AttributeError: attribute 'maxlen' of 'collections.deque' objects is not writable
https://docs.python.org/2/library/collections.html#deque-objects
【问题讨论】:
-
为什么需要为 Python 3.4 执行此操作?您使用的代码是 Python 2.5 和 2.6 的反向移植,以后版本不需要。
-
我正在使用 python 3.4,它抛出了 AttributeError: 'collections.deque' 对象的属性 'maxlen' 不可写
-
这很清楚,但不是我问的。
标签: python python-3.x collections deque