Memory footprint of a class instance

Mike Meyer mwm at
Thu Feb 20 17:06:36 CET 2003

dromedary <camel at> writes:

> A beginner's question:
> Suppose I set up a class to handle files intended for text processing,
> and I make a class that looks like so:
> class FileInit:
>    def __init__(self, path):
>       self.pointer = open(path)
>       self.string = open(path).read()  
>       self.list = open(path).readlines()
> Then I instantiate the class like so:
> fh = FileInit('MY-PATH')
> Have I then already read the file into fh.string and fh.list, or do
> they exist only if I call them by, say, 
> print fh.string

They exist as when the instance is created.
> I'm using large lists of words, and I wonder if I'll gum up the works
> by creating big list and string objects right off the bat.
> BTW, the reason for the class is that when I've used this code
> f = open('MY-PATH').read()
[repeated reads fail.]

That's because you've already read it once. Use seek to reset
it. Assuming you want self.pointer at the start of the file, and using
the new, improved 2.2 name:

        def __init__(self, path):
            self.pointer = file(path)
            self.string =
            self.list = self.pointer.readlines()

This has the advantage of not relying on the garbage collector to
close the extra files you opened, which is a bad idea.

Mike Meyer <mwm at>
Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.

More information about the Python-list mailing list