From 631ba9a419691fdd4533357351ac81b35a5f54f3 Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Fri, 23 May 2014 01:14:47 +0300 Subject: [PATCH] collections.defaultdict: Add __new__ to perform basic initialization. TODO: Actually, nowadays should just subclass dict, but that's left for next time. --- collections.defaultdict/collections/defaultdict.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/collections.defaultdict/collections/defaultdict.py b/collections.defaultdict/collections/defaultdict.py index 773ba925..baf56592 100644 --- a/collections.defaultdict/collections/defaultdict.py +++ b/collections.defaultdict/collections/defaultdict.py @@ -1,5 +1,14 @@ class defaultdict: + @staticmethod + def __new__(cls, default_factory=None, **kwargs): + # Some code (e.g. urllib.urlparse) expects that basic defaultdict + # functionality will be available to subclasses without them + # calling __init__(). + self = super(defaultdict, cls).__new__(cls) + self.d = {} + return self + def __init__(self, default_factory=None, **kwargs): self.d = kwargs self.default_factory = default_factory