我希望有一个默认字典,在构造新对象时包含一个参数。这是否可能?是否有更好的方法?
defaultdict(myobj, param1)
然后是myobj:
class myobj(object):
def __init__(self, param1):
self.param1 = param1
我希望有一个默认字典,在构造新对象时包含一个参数。这是否可能?是否有更好的方法?
defaultdict(myobj, param1)
然后是myobj:
class myobj(object):
def __init__(self, param1):
self.param1 = param1
defaultdict
可以接受任何可调用对象,因此您可以创建一个新函数,该函数不需要参数并返回使用您想要的参数实例化的对象。
d = defaultdict(lambda: myobj(param1))
import functools
d = defaultdict(functools.partial(myobj, param1))
def
显式创建函数/闭包,然后将该函数传递给defaultdict
。这样你就有了可以正确调试和检查的东西。 - abarnertfunctools.partial
会更好吗? - Chris Barkerlambda
和def
具有完全相同的作用域规则。如果您在循环中执行此操作,functools.partial
是避免头痛的好方法。 - user2357112def
应该是可 pickle 的。def myobj_withparam(): return myobj(param1); d = defaultdict(myobj_withparam)
- Chris Barker