[Python-Dev] Type hints -- a mediocre programmer's reaction
Chris Barker
chris.barker at noaa.gov
Wed Apr 22 00:41:03 CEST 2015
On Tue, Apr 21, 2015 at 2:33 AM, Cory Benfield <cory at lukasa.co.uk> wrote:
> It seems like the only place the type annotations will get used is in
> relatively trivial cases where the types are obvious anyway. I don't
> deny that *some* bugs will be caught, but I suspect they'll
> overwhelmingly be crass ones that would have been caught quickly
> anyway.
Well, it'll catch passing in a string instead of a sequence of strings --
one of teh common and semi-insidious type errors I see a lot (at least with
newbies).
Oh wait, maybe it won't -- a string IS a sequence of strings. That's why
this is an insidioous bug in teh first place:
List[string]
will work, yes -- but now I'm locked down the user to an actual, list, yes?
So I try:
Iterable[string]
ah yes -- now users can use tuples of strings, or a custom class, or -- but
wait, darn it, a string IS an iterable of strings.. SIGH.
NOTE: I've thought for years that Python should have a character type for
this reason, but that's a side note.
Oh, and I'm a heavy numpy user. And, in fact, I write a lot of functions
that are essentially statically typed -- i.e. they will only work with a
Nx3 array of float64 for instance. However, in this case, I want run-time
type checking, and I DON'T want the API to be statically typed, so I use
something like:
the_arr = np.asarray( input_object, dypte-np.float64).reshape(-1, 3)
and in my docstring:
:param input_object: the input data to compute something from
:type input_object: (Nx3) numpy array or floats or somethign that can be
turned into one.
Is there any way for type hinting to help here???
- Chris
--
Christopher Barker, Ph.D.
Oceanographer
Emergency Response Division
NOAA/NOS/OR&R (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception
Chris.Barker at noaa.gov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20150421/8b69bdd5/attachment-0001.html>
More information about the Python-Dev
mailing list