我不得不从 python 2.7 更改为 2.6.我一直在使用带有 maxlen 属性的双端队列,并且一直在检查 maxlen 是什么.显然你可以在 python 2.6 中使用 maxlen,但在 2.6 双端队列中没有 maxlen 属性.在 python 2.6 中检查双端队列的 maxlen 的最简洁方法是什么?
在 2.7 中:
from collections import dequed = 双端队列(最大长度 = 10)打印 d.maxlen在 2.6 中可以使用 deque,并且 maxlen 可以正常工作,但是 maxlen 不是可以引用的属性.
干杯
解决方案我将通过继承 collections.deque 来创建我自己的 deque.这并不困难.也就是说,这里是:
导入集合类双端队列(collections.deque):def __init__(self, iterable=(), maxlen=None):super(deque, self).__init__(iterable, maxlen)self._maxlen = maxlen@财产def maxlen(自我):返回 self._maxlen这是工作中的新双端队列:
>>>d = 双端队列()>>>打印双端队列([])>>>打印 d.maxlen没有任何>>>d = 双端队列(最大长度 = 3)>>>打印双端队列([], maxlen=3)>>>打印 d.maxlen3>>>d = 双端队列(范围(5))>>>打印双端队列([0, 1, 2, 3, 4])>>>打印 d.maxlen没有任何>>>d = 双端队列(范围(5),maxlen=3)>>>打印双端队列([2, 3, 4], maxlen=3)>>>打印 d.maxlen3I have had to change from python 2.7 to 2.6. I've been using a deque with the maxlen property and have been checking what the maxlen is. Apparently you can use maxlen in python 2.6, but in 2.6 deques do not have a maxlen attribute. What is the cleanest way to check what the maxlen of a deque is in python 2.6?
In 2.7:
from collections import deque d = deque(maxlen = 10) print d.maxlenIn 2.6 the deque can be used and the maxlen works properly, but maxlen is not an attribute that can be referred to.
Cheers
解决方案I would create my own deque by inheriting from collections.deque. It is not difficult. Namely, here it is:
import collections class deque(collections.deque): def __init__(self, iterable=(), maxlen=None): super(deque, self).__init__(iterable, maxlen) self._maxlen = maxlen @property def maxlen(self): return self._maxlenand this is the new deque at work:
>>> d = deque() >>> print d deque([]) >>> print d.maxlen None >>> d = deque(maxlen=3) >>> print d deque([], maxlen=3) >>> print d.maxlen 3 >>> d = deque(range(5)) >>> print d deque([0, 1, 2, 3, 4]) >>> print d.maxlen None >>> d = deque(range(5), maxlen=3) >>> print d deque([2, 3, 4], maxlen=3) >>> print d.maxlen 3