레이몬드 Hettinger showed 컬렉션 클래스를 결합 할 수있는 정말 멋진 방법 :OrderedDict에서 서브 클래 싱과 defaultdict
from collections import Counter, OrderedDict
class OrderedCounter(Counter, OrderedDict):
pass
# if pickle support is desired, see original post
내가 OrderedDict 및 defaultdict 비슷한 일을하고 싶다. 물론 defaultdict는 __init__
서명이 다르므로 추가 작업이 필요합니다. 이 문제를 해결하는 가장 깨끗한 방법은 무엇입니까? 나는 파이썬 3.3을 사용한다.
여기서 좋은 해결책을 찾았습니다 : https://stackoverflow.com/a/4127426/336527,하지만 어쩌면 defaultdict에서 파생 된 것이 더 간단 할 수도 있습니다.
그 클래스에 대한 명시적인'super'-delegation없이? 왜냐하면 평소처럼'dict'에 직접가는 대신'OrderedDict'를 통해 재 라우팅되는 'Counter'내의 어딘가에서'super '호출이 있었기 때문입니까? 아니면 그냥? –
@KarlKnechtel 당신은'OrderedCounter'를 의미하지만 좋은 질문입니다. – agf
@ 예, 그렇습니다. Stupid edit timeout ... :( –