On Jul 29, 7:30 pm, Steven D'Aprano <[EMAIL PROTECTED] cybersource.com.au> wrote: > On Tue, 29 Jul 2008 10:30:43 -0700, Carl Banks wrote: > > On Jul 29, 5:15 am, Heiko Wundram <[EMAIL PROTECTED]> wrote: > >> I can't dig up a simple example from code I wrote quickly, but because > >> of the fact that explicit comparisons always hamper polymorphism > > > I'm not going to take your word for it. Do you have code that > > demonstrates how "if x" improves polymorphism relative to simple > > explicit tests? > > On the rapidly decreasing chance that you're not trolling (looking more > and more unlikely every time you post): > > # The recommended way: > if x: > do_something > > # Carl's so-called "simple explicit tests" applied to polymorphic code:
No, the following isn't my way. > try: > # could be a sequence or mapping? > # WARNING: must do this test *before* the number test, otherwise > # "if [] != 0" will return True, leading to the wrong branch being > # taken. > if len(x) != 0: > do_something > except AttributeError: > # not a sequence or mapping, maybe it's a number of some sort > try: > int(x) > except TypeError: > # not convertable to numbers > # FIXME: not really sure what to do here for arbitrary types > # so fall back on converting to a boolean, and hope that works > if bool(x): > do_something > else: > if x != 0: > do_something I say that you will never, ever have to do this because there isn't a do_something that's actually useful for all these types. Ok, tell me, oh indignant one, what is do_something? What could possibly be the contents of do_something such that it actually does something useful? If you can tell me what do_something is you will have answered my question. Carl Banks -- http://mail.python.org/mailman/listinfo/python-list