Raymond Hettinger showed un modo davvero cool per combinare classi di insiemi:sottoclassi da OrderedDict e defaultdict
from collections import Counter, OrderedDict
class OrderedCounter(Counter, OrderedDict):
pass
# if pickle support is desired, see original post
voglio fare qualcosa di simile per OrderedDict e defaultdict. Ma, naturalmente, defaultdict ha una diversa firma __init__
, quindi richiede un lavoro extra. Qual è il modo più pulito per risolvere questo problema? Io uso Python 3.3.
Ho trovato una buona soluzione qui: https://stackoverflow.com/a/4127426/336527, ma stavo pensando che derivare da defaultdict potrebbe renderlo ancora più semplice?
Visto che siamo in tema, qualcuno può spiegarmi come l'esempio OrderedDict in realtà ottiene funzionalità OrderedDict senza alcuna esplicita 'super'-delegazione in quella classe? È a causa di 'super' chiamate da qualche parte all'interno di' Counter' che vengono reindirizzati attraverso 'OrderedDict' invece di andare a' dict' direttamente come ordinariamente farebbero? O solo cosa? –
@KarlKnechtel Intendi "OrderedCounter", ma buona domanda. – agf
@agf er, si, esattamente. Stupid timeout di modifica ... :( –