I believe ```iris.fileformats.rules.regular_step()``` (which you use to determine the step) will raise an exception if any of the conditions you state are not met so you don't need to constrain the type in this way.  Explicit type checking is undesirable because I might create my own class derived from Coord that does everything a DimCoord does (and more) in a new more exciting way. I'd like to be able to use it in place of a DimCoord but checks like this prevent it. See duck typing and EAFP.

PS. AuxCoords are never promoted into DimCoords when added to a cube. I'd consider this a severe side effect - adding a coord to a cube should not modify the coord instance. Furthermore changing the type of an instance is generally a very bad idea (see http://docs.python.org/2/reference/datamodel.html#id5).