On Fri, Apr 17, 2020 at 5:06 AM <dcwhat...@gmail.com> wrote:
>
> On Thursday, April 16, 2020 at 2:37:42 PM UTC-4, Chris Angelico wrote:
> > On Fri, Apr 17, 2020 at 2:13 AM Richard Damon <Richard> wrote:
> > > I get the answer: <class '_io.TextIOWrapper'>
> > >
> > > So that is the name of the type that is returned, at least for that
> > > call. One key thing to note is that it begins with a _, so that type is
> > > actually an implementation detail, subject to change.
> >
> > This is somewhat true; but when the *module* begins with an
> > underscore, it often means it's a C accelerator for a Python module.
> > You can often find the same thing exposed in a more visible way:
> >
> > >>> import io
> > >>> io.TextIOWrapper
> > <class '_io.TextIOWrapper'>
> >
> > And in that location, it is fully documented:
> >
> > https://docs.python.org/3/library/io.html#io.TextIOWrapper
> >
> > The fact that it comes from the accelerator *is* an internal
> > implementation detail, but the class itself is a public one.
> >
> > That said, though: it is still very much incorrect to type hint in
> > this way. The correct type hint is a generic one:
> >
> > https://docs.python.org/3/library/typing.html#typing.IO
> >
> > And the correct way to encode this on a variable is to let type
> > inference figure it out. You'd use typing.IO or typing.TextIO to
> > annotate a function parameter, perhaps, but don't annotate your
> > variables at all.
> >
> > ChrisA
>
> "And the correct way to encode this on a variable is to let type
> inference figure it out. You'd use typing.IO or typing.TextIO to
> annotate a function parameter, perhaps, but don't annotate your
> variables at all."
>
> I don't know how many times I have to say this, but I've already decided that 
> the types of variables are going to be part of my code base.  Same as every 
> other language I've programmed in, whether statically or dynamically typed.
>
> I don't care if it's 'incorrect' for most purposes.  I'm doing it, for my 
> specific purpose.
>

Oh! Okay then. Just annotate it as "int" - it's no more or less wrong
than any other annotation :) Problem solved!

ChrisA
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to