OK, so the reason I didn't use an abstract class originally is because the `Formatter` class which this inherits from uses the same simple `NotImplementedError` to make sure derived classes implement a `__call__` method, rather than an abstract class.

My `_GeoFormatter` class fully implements the `Formatter` class (i.e. has a `__call__` method) so I suppose technically there is nothing stopping it from being implemented as an abstract class...  I just didn't feel entirely comfortable with that.

Can you give me a good reason why I'd want to move to an abstract class, or equally a good reason why not to in light of the inheritance discussed above? I'm not bothered either way, but I'd appreciate some input to decide what the best action is.