On Fri, Apr 17, 2020 at 2:13 AM Richard Damon <rich...@damon-family.org> 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 -- https://mail.python.org/mailman/listinfo/python-list