> I'm still uncomfortable with the use of MethodType here,
the docstring you provide still doesn't say what the args are for.

The unittests speak for themselves (https://github.com/SciTools/iris/pull/871/files#diff-9)

> I'm not sure it's generic as you're passing in netcdftime.datetime

OK not generic in that sense, but generic in the sense that it's not a subclass of the specific object in question.

> What are the implications of passing in the wrong class here?

self.units.is_time_reference() calls `netcdftime.num2date` which returns a `datetime` or `netcdftime.datetime`.  There is no 'wrong class' available.  I don't see the need for additional type checking, unless you have a specific case/reason you can think of?

> What are the implications of wrapping instead

```Python
>>> dt = datetime(1, 1, 1)
>>> class WrappyThing(object):
...     def __init__(self, dt):
...         self.dt = dt
... 
>>> wrapped_dt = WrappyThing(dt)
>>> isinstance(wrapped_dt, datetime)
False
```

More type checking down the road.

Perhaps a subclass of netcdf.datetime object is the best alternative? (I'll give that a go).