def __init__(self, **kwargs):
        for name in dir(self):
            value = getattr(self, name)
            if isinstance(value, Factory):
                setattr(self, name, value())

        for name, value in kwargs.iteritems():
            try:
                attribute = getattr(self, name)
            except __HOLE__:
                attribute = None
            if isinstance(attribute, PersistentList):
                attribute.extend(value)
            elif isinstance(attribute, (PersistentMapping, OOBTree)):
                attribute.update(value)
            else:
                setattr(self, name, value)
dataset/ETHPy150Open disqus/playa/playa/ext/zodb.py/Model.__init__