QST: How to handle Index._id in an Index subclass?
- [ ] I have searched the [[pandas] tag](https://stackoverflow.com/questions/tagged/pandas) on StackOverflow for similar questions.

- [ ] I have asked my usage related question on [StackOverflow](https://stackoverflow.com).

---

#### Question about pandas

In xarray we make use of an `Index` subclass for datetime-like indexing with non-standard calendars, which we call `CFTimeIndex`.  A recent change, #37087, led to some test failures on our end.  We currently do not define an `_id` attribute on our subclass, so we are vulnerable to the kinds of attribute errors illustrated below (note this example requires the [xarray](https://github.com/pydata/xarray) and [cftime](https://github.com/Unidata/cftime) libraries be installed, with the development version of pandas):

```
In [1]: import xarray as xr

In [2]: xr.cftime_range("2000", periods=2).view()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-2-5226cd5e3bc1> in <module>
----> 1 xr.cftime_range("2000", periods=2).view()

~/Software/pandas/pandas/core/indexes/base.py in view(self, cls)
    630             result = self._shallow_copy()
    631         if isinstance(result, Index):
--> 632             result._id = self._id
    633         return result
    634

AttributeError: 'CFTimeIndex' object has no attribute '_id'
```

Where possible, we try to avoid using private methods/attributes on our subclass.  In this case would you recommend we go against that by setting the `_id` attribute, e.g. by using `_reset_identity` in our constructor, or would it be possible to continue to have `_id` be somewhat of an optional attribute of `Index` objects in pandas?
