Raymond Hettinger showed eine wirklich coole Art Collection-Klassen zu kombinieren:Subklassen von OrderedDict und defaultdict
from collections import Counter, OrderedDict
class OrderedCounter(Counter, OrderedDict):
pass
# if pickle support is desired, see original post
Ich möchte etwas ähnliches für OrderedDict und defaultdict tun. Aber natürlich hat defaultdict eine andere __init__
Signatur, so dass es zusätzliche Arbeit erfordert. Was ist der sauberste Weg, um dieses Problem zu lösen? Ich benutze Python 3.3.
Ich fand eine gute Lösung hier: https://stackoverflow.com/a/4127426/336527, aber ich dachte, vielleicht abgeleitet von defaultdict könnte dies noch einfacher machen?
Während wir auf das Thema sind, kann mir jemand erklären, wie das OrderedDict Beispiel bekommt tatsächlich OrderedDict Funktionalität ohne explizite 'Super'-Delegation zu dieser Klasse? Liegt es an "Super" -Aufrufen irgendwo innerhalb von "Counter", die durch "OrderedDict" umgeleitet werden, anstatt direkt zu "dict" zu gehen, wie es normalerweise der Fall wäre? Oder nur was? –
@KarlKnechtel Sie meinen 'OrderedCounter', aber gute Frage. – agf
@agf er, ja, genau. Stupid edit timeout ... :( –