Half-integer indices
You can make  __getitem__ which takes arbitrary objects as indices (and floating point numbers in particular).
I am working on a fluid dynamics simulation tool in Python.  Traditionally (at least in my field), integer indices refer to the center of a cell.  Some quantities are stored on the faces between cells, and in the literature are denoted by half-integer indices.  In codes, however, these are shifted to integers to fit into arrays.  The problem is, the shift is not always consistent: do you add a half or subtract?  If you switch between codes enough, you quickly lose track of the conventions for any particular code.  And honestly, there are enough quirky conventions in each code that eliminating a few would be a big help... but not if the remedy is worse than the original problem.
I have thought about using even indices for cell centers and odd for faces, but that is counterintuitive.  Also, it's rare for a quantity to exist on both faces and in cell centers, so you never use half of your indices.  You could also implement functions plus_half(i) and minus_half(i), but that gets verbose and inelegant (at least in my opinion).  And of course floating point comparisons are always problematic in case someone gets cute in how they calculate 1/2.
Does anyone have a suggestion for an elegant way to implement half-integer indices in Python?  I'm sure I'm not the first person to wish for this, but I've never seen it done in a simple way that is obvious to a user (without requiring the user to memorize the shift convention you've chosen).
And just to clarify: I assume there is likely to be a remap step hidden from the user to get to integer indices (I intend to wrap NumPy arrays for my data grids).  I'm thinking of the interface exposed to the user, rather than how the data is stored.