Memory footprint of a class instance

Rene Pijlman reageer.in at de.nieuwsgroep
Wed Feb 19 20:20:19 EST 2003


dromedary:
>   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

Yes, __init__ is executed when a class instance is created.

>or do they exist only if I call them by, say, 
>print fh.string

No. But you could implement it that way of course, by moving
read() out of __init__ and into string (which would need to be a
method or a property, not a normal attribute).

See aso
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/131495
for another trick. A bit complicated if you ask me, but some
would perhaps call it Pythonic :-)

>BTW, the reason for the class is that when I've used this code
>
>f = open('MY-PATH').read()
>
>I get a perfectly nice pointer if I just put f on the command line and
>hit return. 

The above code reads the contents of the file into a string f.

This is what I see:

>>> f = open("d:\\x.txt").read()
>>> print type(f)
<type 'str'>
>>> print f
bla

And so I don't understand the rest of your story about the
behavior of read().

>If I'm mistaken in my assumptions or there's a easier way to 
>create strings and lists to slice and dice from files, please 
>let me know.

The problem may be in my limited grasp of the English language,
but I don't quite understand what you mean here.

-- 
René Pijlman

Wat wil jij leren?  http://www.leren.nl




More information about the Python-list mailing list