Check maxlen deque in python 2.6


I had to upgrade from python 2.7 to 2.6.
I use deque with maxlen property and check what maxlen is. Obviously you can use maxlen in python 2.6, but in 2.6 deques there is no maxlen attribute.
What is the cleanest way to verify that maxlen deque is in python 2.6?

In version 2.7:

from collections import deque
d = deque(maxlen = 10)
print d.maxlen

In 2.6, you can use deque and maxlen works correctly, but maxlen is not an attribute that can be referenced.

Greetings

+5
source share
4 answers

I would create my own deque, inheriting from collections.deque. It's not hard. 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._maxlen

and 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
+5

maxlen - deque, Python 2.7. Python 2.6.

, , :

  • , deque, maxlen.
  • , maxlen
+2

, deque. - :

class Deque(deque):
    def __init__(self,*args,**kwargs):
        deque.__init__(self, *args, **kwargs)
        self.maxlen = kwargs.get('maxlen',None)

>>>d = Deque(maxlen=10)
>>>d.maxlen
>>>10
+2

, maxlen, :

>>> import re

>>> d = deque(maxlen=42)

>>> d.__repr__()
'deque([], maxlen=42)'

>>> int(re.sub("\)$","",re.sub(".*=","",d.__repr__())))
42

, , . 2,7, , .

+1

All Articles