У меня есть класс, который включает в себя некоторые функции обработки файлов, которые мне нужны. Другой класс создает экземпляр обработчика файлов
и использует его неопределенное время. В конце концов, вызывающий
уничтожается, что уничтожает единственную ссылку на обработчик файлов
.
Как лучше всего обработчик файлов
закрыть файл?
В настоящее время я использую __ del __ (self)
, но после просмотра нескольких разных вопросов и статей , у меня сложилось впечатление, что это считается плохим .
class fileHandler:
def __init__(self, dbf):
self.logger = logging.getLogger('fileHandler')
self.thefile = open(dbf, 'rb')
def __del__(self):
self.thefile.close()
Это соответствующий бит обработчика. Вся суть класса состоит в том, чтобы абстрагироваться от деталей работы с базовым файловым объектом, а также избегать излишнего чтения всего файла в память. Однако часть обработки базового файла заключается в его закрытии, когда объект выпадает из области видимости.
Предполагается, что вызывающий вызывающий
не должен знать или заботиться о деталях, связанных с обработчиком файлов
. Работа обработчика файлов
состоит в том, чтобы высвободить все необходимые ресурсы, задействованные, когда они выпадают из области видимости. Это одна из причин, по которой он вообще был абстрагирован.Итак, мне кажется, что я столкнулся с проблемой перемещения кода обработчика файлов
в вызывающий объект или работы с дырявой абстракцией.
Мысли?