That is an option, although if we enforce that, the existing metadata unit tests will fail and will need modifying. In my view assigning new metadata corresponds to a 'brute-force, I know what I'm doing' replace operation in which every piece of metadata is replaced by a new value (leaving the data array untouched of course). Given the standard_name, long_name etc. are potentially being changed it seems unlikely that I would want to prevent the units being replaced as well.

The implementation is equivalent to calling ```replace_units()```, whilst retaining the simple, loop through the values and call ```setattr```.