将参数传递给defaultdict创建的对象

Kev*_*vin 4 python defaultdict

我想要一个默认的dict,它在构造一个新对象时包含一个参数.这有可能吗,有没有更好的方法呢?

defaultdict(myobj, param1)
Run Code Online (Sandbox Code Playgroud)

那么myobj:

class myobj(object):

    def __init__(self, param1):
        self.param1 = param1
Run Code Online (Sandbox Code Playgroud)

Chr*_*ker 6

defaultdict 采用任何可调用的,因此您可以创建一个不接受参数的新函数,并返回一个使用您想要的参数实例化的对象.

d = defaultdict(lambda: myobj(param1))
Run Code Online (Sandbox Code Playgroud)

另一个选择是使用functools.partial,它创建一个具有预定义的一个(或多个)参数的函数:

import functools
d = defaultdict(functools.partial(myobj, param1))
Run Code Online (Sandbox Code Playgroud)

  • 可能只需要对'param1`的范围有些小心...... (3认同)