diff --git a/dbtest.py b/dbtest.py index 22fb7dd..1a341ed 100644 --- a/dbtest.py +++ b/dbtest.py @@ -1,7 +1,7 @@ import graveldb class Screw(graveldb.Table('Screw', '/tmp')): - default = lambda self: graveldb.Object(size=1) + default = dict(size=1) s = Screw('foo') with s: diff --git a/graveldb.py b/graveldb.py index 66d8cf3..265a1c9 100644 --- a/graveldb.py +++ b/graveldb.py @@ -19,7 +19,13 @@ def Table(name, path): class _Table(object): def __init__(self, name): self.name = name - self.data = self.table.get(name, self.default()) + self.data = self.table.get(name, Object()) + self.setup() + + def setup(self): + for k, v in self.default.items(): + if not hasattr(self.data, k): + setattr(self.data, k, v) def save(self): self.table[self.name] = self.data @@ -30,7 +36,7 @@ def __enter__(self): def __exit__(self, *args): self.table.unlock_all() - default = lambda self: Object() + default = {} class Object(object): def __init__(self, **kwargs):