Написал контекстный менеджер, который и так уже существует:
class FileConn:
def __init__(self, file_name):
self.file_name = file_name
def __enter__(self):
print('open connection')
self.file = open(self.file_name, 'r')
return self.file
def __exit__(self, exc_type, exc_val, exc_tb):
print('close connection')
self.file.close()
if __name__ == '__main__':
print('start of script')
name = 'test.txt'
with FileConn(name) as file:
for string in file:
print(string, end=' ')
print('end of script')
Как видно из кода, он открывает и закрывает файл. Скажите пожалуйста хотя бы общими словами зачем метод __enter__ нужно обязательно заканчивать инструкцией return?
Этот метод приравнивает дескриптор файла к переменной self.file. Этого уже достаточно чтобы работать с файлом, непонятно какую функцию выполняет здесь return. Но без этой инструкции код перестаёт выполняться