在python 2.6中检查deque的maxlen

sim*_*onb 5 python python-2.6 deque


我不得不从python 2.7改为2.6.
我一直在使用带有maxlen属性的双端队列,并且一直在检查maxlen是什么.显然你可以在python 2.6中使用maxlen,但在2.6 deques中没有maxlen属性.
在python 2.6中检查双端队列的maxlen是什么最干净的方法是什么?

在2.7中:

from collections import deque
d = deque(maxlen = 10)
print d.maxlen
Run Code Online (Sandbox Code Playgroud)

在2.6中,可以使用deque并且maxlen正常工作,但是maxlen不是可以引用的属性.

干杯

Muh*_*uri 5

我会deque通过继承来创建自己的collections.deque.这并不困难.即,这里是:

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._maxlen
Run Code Online (Sandbox Code Playgroud)

这是工作中的新副本:

>>> 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
Run Code Online (Sandbox Code Playgroud)