我希望有一个默认的dict,它在构造一个新对象时包含一个参数。这有可能吗,有没有更好的方法呢?
defaultdict(myobj, param1)
然后myobj:
class myobj(object):
def __init__(self, param1):
self.param1 = param1
答案 0 :(得分:6)
defaultdict
接受任何可调用的,因此您可以创建一个不接受参数的新函数,并返回一个使用您想要的参数实例化的对象。
d = defaultdict(lambda: myobj(param1))
另一种选择是使用functools.partial,它创建一个具有预定义参数的一个(或多个)函数:
import functools
d = defaultdict(functools.partial(myobj, param1))