What variable type is returned from Open()?

Richard Damon Richard at Damon-Family.org
Thu Apr 16 12:11:54 EDT 2020


On 4/15/20 9:55 AM, dcwhatthe at gmail.com wrote:
> Hi,
>
>
> As much as possible, I make use of optional type hints.  So if I know a function returns an integer, then I use
>
>
> this_number_i : int = GetThisNumber()
>
>
> But there's no 'file' type, so I'm not sure what to use as the type for the return value of an Open() function.
>
>
> config_file : file = open(config_file_s, "r")
>
>
> What type of variable should config_file (above) be declared as?
>
Running the simple test program in IDLE:


f = open("TestFile.txt", "w")
print (type(f))

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 isn't that
strange in Python as normally you don't really need to know the type of
an object, but what capabilities the object supports (most from its
type, but some operations can be just added to the object). This is
largely because Python is based on a concept call 'Duck-Typing', where
it is more important if the object quacks like a duck then if it
technically IS a duck. (And strangely, I believe you can have something
that technically is a duck, but doesn't quack like one, as well as
something totally unrelated to the duck type but quacks just like one).
Files are such an animal, 'fileness' is not based on type, but on
capability.

-- 
Richard Damon



More information about the Python-list mailing list