M
massimo s.
Hi,
Python 2.4, Kubuntu 6.06. I'm no professional programmer (I am a ph.d.
student in biophysics) but I have a fair knowledge of Python.
I have a for loop that looks like the following :
for item in long_list:
foo(item)
def foo(item):
item.create_blah() #<--this creates item.blah; by doing that it
opens a file and leaves it open until blah.__del__() is called
Now, what I thought is that if I call
del(item)
it will delete item and also all objects created inside item. So I
thought that item.blah.__del__() would have been called and files
closed.
Question 1:
This is not the case. I have to call del(item.blah), otherwise files
are kept open and the for loops end with a "Too many open files"
error. Why isn't __del__() called on objects belonging to a parent
object? Is it OK?
So I thought:
oh, ok, let's put del(self.blah) in item.__del__()
Question 2:
This doesn't work either. Why?
Thanks a lot,
M.
Python 2.4, Kubuntu 6.06. I'm no professional programmer (I am a ph.d.
student in biophysics) but I have a fair knowledge of Python.
I have a for loop that looks like the following :
for item in long_list:
foo(item)
def foo(item):
item.create_blah() #<--this creates item.blah; by doing that it
opens a file and leaves it open until blah.__del__() is called
Now, what I thought is that if I call
del(item)
it will delete item and also all objects created inside item. So I
thought that item.blah.__del__() would have been called and files
closed.
Question 1:
This is not the case. I have to call del(item.blah), otherwise files
are kept open and the for loops end with a "Too many open files"
error. Why isn't __del__() called on objects belonging to a parent
object? Is it OK?
So I thought:
oh, ok, let's put del(self.blah) in item.__del__()
Question 2:
This doesn't work either. Why?
Thanks a lot,
M.