def ImmutableMutant(callable_returning_object_to_be_proxied):
def mutator(_):<EOL><INDENT>return callable_returning_object_to_be_proxied()<EOL><DEDENT>return OnAccessMutant(initial_object=None, mutator_callable=mutator)<EOL>
A pseudoclass that proxies everything to another object.
But this object doesn't have to be constant:
it's reevaluated on every access by calling the provided callable.
It behaves like it doesn't even store the proxied object!

It's called 'immutable' because there's no point in,
for example, setting attributes on it,
as they will be lost on the very next reevaluation,
before they can be accessed again.

Usage: ImmutableMutant(callable_returning_objects_to_be_proxied)