+
+class autotype(type):
+ def __call__(self, *args, **kwargs):
+ new = super().__call__(*args, **kwargs)
+ new.id = self.store.register(new)
+ self.store.update(new.id, vfy=new) # This doesn't feel too nice.
+ return new
+
+class autostore(object, metaclass=autotype):
+ def __init__(self):
+ self.id = None
+
+ def save(self):
+ self.store.update(self.id, vfy=self)
+
+ def remove(self):
+ self.store.unregister(self.id, vfy=self)
+ self.id = None