As an aside, usually if I wrap an object in a lambda it becomes immutable (i.e. safe and easier to understand) i.e. if I try to change the month or the day it stays the same because the lambda is fixed.

But datetime objects are themselves immutable, so adding lambdas doesn't actually give us much extra.

One thing I learned today, is that container objects - lists, dictionaries and sets - are usually mutable, whereas value objects - floats, strings, datetimes and tuples(!) are immutable.