2016-03-23 3 views
1

Existe-t-il une collection qui génère des exceptions en cas de dépassement de sa taille maximale?Collection qui génère une exception en cas de dépassement de sa taille maximale

Je sais que cela se produit dans l'objet Queue.Queue mais il n'a pas déclenché d'exception lorsque j'ai utilisé collections.deque, mais à la place le dernier élément a été remplacé.

Merci d'avance!

+0

Vous pouvez créer une enveloppe personnalisée subclassing collection la plus appropriée ou la construction dans le type, ajoutez une propriété de longueur et vérifier avant l'ajout de nouveaux éléments en remplaçant méthodes – Nikita

+0

Quand vous dites "collection", voulez-vous dire spécifiquement une file d'attente double? Ou un dictionnaire? Ou qu'est-ce que c'est que «File d'attente» qui ne correspond pas à vos besoins. –

Répondre

0

Vous pouvez utiliser un Queue qui soulève queue.Full si plein:

>>> import queue 
>>> q = queue.Queue(3) 
>>> q.put_nowait(1) 
>>> q.put_nowait(2) 
>>> q.put_nowait(3) 
>>> q.put_nowait(4) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/Users/ruediger/data/p3/Python-3.4.2/Lib/queue.py", line 187, in put_nowait 
    return self.put(item, block=False) 
    File "/Users/ruediger/data/p3/Python-3.4.2/Lib/queue.py", line 133, in put 
    raise Full 
queue.Full 
+0

Thnk vous Daniel. Mais je connais ce genre de collection, je me demandais s'il y avait une autre collection qui soulèverait une exception similaire – NI6