typechecks: just say no! (was Re: Determining Types)

Emile van Sebille emile at fenx.com
Mon Sep 3 12:21:31 EDT 2001


---------
"Alex Martelli" <aleax at aleax.it> wrote in message
news:9n077501por at enews1.newsguy.com...

<snip>

>
> If I had to implement this in Python 2.1 or earlier,
> I'd use either variant of "it's easier to get
> forgiveness than permission", which after all IS
> the typical idiom to use where the unenlightened
> would typetest: i.e., either:
>
> def __getitem__(self, index):
>     try: return getattr(self, index)
>     except AttributeError:
>         fieldname=self.__fieldnames[index]
>         return fieldname, getattr(self, fieldname)
>
> or:
>
> def __getitem__(self, index):
>     try:
>         fieldname=self.__fieldnames[index]
>     except TypeError:
>         return getattr(self, index)
>     else:
>         return fieldname, getattr(self, fieldname)
>
> This would let client-code use any "index" that is
> string'ish enough to please getattr, or int'ish
> enough to please the [] indexing on __fieldnames
> (don't use double leading AND trailing __ for your
> own purposes, they're all "reserved to Python"!-).
>

Yes, but if you expect you're going to get a TypeError and program for that,
what's the difference if you do a type check first?

--

Emile van Sebille
emile at fenx.com





More information about the Python-list mailing list