И это всё МОЁ

Шалом.
Как известно, __init__ не возвращает ничего, кроме None, поэтому использую __new__, дабы возвращать при инициализации экземпляра _io.TextIOWrapper. После отработки сборщик мусора почему-то не закрывает файл, даже при явно прописанном del myfile.

class file:
def __new__(self, filename):
self.openfile = open(filename, 'r')
return self.openfile

def __del__(self):
print('File', filename, ' closes.')
self.openfile.close()

def read(filename):
for filestr in filename:
print(filestr)

myfile = file(r'/etc/rc.conf')
print(type(myfile))
file.read(myfile)
del myfile


Подскажите, пожалуйста, почему так происходит? Есть другой пример с __init__, в котором всё отрабатывает как надо:

# class
class Awesome:

# the init method
def __init__(self, filename):

print("Inside the __init__ method.";)

# open file
self.fobj = open(filename, "w";)

# method
def writeContent(self, data):

print("Inside the writeContent method.";)

# write the data
self.fobj.write(data)

# the del method
def __del__(self):

print("Inside the __del__ method.";)

# close file
self.fobj.close()

# object
obj = Awesome("helloworld.txt";)
obj.writeContent("Hello World";)








 ,