> Maybe self._constructor is better ?

I see it's implemented as `self.__class__` in `Index`, so I assume it provides some extra functionality in other classes, but I can't grip the rationale: for `Series` it always will return `Series`, even if you subclass it, same for `DataFrame`. What exactly is it *supposed* to do?