Just an idea: would it be possible to replace defer()/defer_unless() with a method decorator? So something like:
def _get_foo(self):
self.defer_unless( someproperty )
# calculate...
becomes
@depends_variation( someproperty )
def _get_foo(self):
# calculate...
It may even be possible to automatically trace dependencies.