I want to create a class that behaves like collections.defaultdict, without having the usage code specify the factory. EG: instead of
class Config(collections.defaultdict):
pass
this:
Config = functools.partial(collections.defaultdict, list)
This almost works, but
isinstance(Config(), Config)
fails. I am betting this clue means there are more devious problems deeper in also. So is there a way to actually achieve this?
I also tried:
class Config(Object):
__init__ = functools.partial(collections.defaultdict, list)
I don't think there's a standard method to do it, but if you need it often, you can just put together your own small function:
If you actually need working explicit type checks via
isinstance
, you can simply create a not too trivial subclass:You'll have no-argument construction with the list factory and
will work as well.