I agree with everything in this except "You can't extend existing types with data". Data inheritance is implementation inheritance. Don't add it.
> In e.g. Python, you are not going to run into types you want to subclass, but can't.
In python, you can only really subclass things that were designed to be subclassed. Subclassing arrays, dataframes, or anything from xarray or dask is explicitly recommended against by those packages. In practice I only subclass the base scikit-learn transformers, Abstract Base Classes, or classes I've written.