On 29 May 2013 18:51, "Croepha" <croe...@gmail.com> wrote: > > Is there anything like this in the standard library? > > class AnyFactory(object): > def __init__(self, anything): > self.product = anything > def __call__(self): > return self.product > def __repr__(self): > return "%s.%s(%r)" % (self.__class__.__module__, self.__class__.__name__, self.product) > > my use case is: collections.defaultdict(AnyFactory(collections.defaultdict(AnyFactory(None)))) > > And I think lambda expressions are not preferable... > > I found itertools.repeat(anything).next and functools.partial(copy.copy, anything) > > but both of those don't repr well... and are confusing... > > I think AnyFactory is the most readable, but is confusing if the reader doesn't know what it is, am I missing a standard implementation of this? > >
Are you sure you don't want to use a lambda expression? They are pretty pythonic. none_factory = lambda: None defaultdict_none_factory = lambda: defaultdict(none_factory) collections.defaultdict(defaultdict_none_factory) Just what are you trying to do?
-- http://mail.python.org/mailman/listinfo/python-list