On Tue, 05 Feb 2013 16:20:19 +1100, Chris Angelico wrote: > On Tue, Feb 5, 2013 at 3:52 PM, Steven D'Aprano > <steve+comp.lang.pyt...@pearwood.info> wrote: >> There's also the principle that it is best to raise an exception as >> early as possible. It's easier to track down errors at the point they >> are introduced than long afterwards. > > Yes, definitely, especially (as was mentioned) if you're working with > callbacks. But I'd use isinstance then.
I'm leaning towards an isinstance check I've been using Python since Python 1.5. Even though 1.5 had an "isinstance" function, I learned Python from books and code written for Python 1.4 which did not have that function, so the usual way to do type- checking was: if type(obj) is type(1): # it's an int and strongly discouraged. So my instincts are still very strongly primed to *not* do type-checking if I can avoid it. But in this case, I think I agree with those suggesting the isinstance check is the right approach. The main downside to this is that objects which delegate to a number will not work unless they are explicitly registered with the Number ABC. Thanks to everyone who responded. -- Steven -- http://mail.python.org/mailman/listinfo/python-list