1)Вот пример реализации класса MyFile, который является контекстным менеджером и позволяет работать с файлами:
class MyFile:
def __init__(self, filename, mode, encoding='utf-8'):
self.filename = filename
self.mode = mode
self.encoding = encoding
def __enter__(self):
self.file = open(self.filename, self.mode, encoding=self.encoding)
return self.file
def __exit__(self, exc_type, exc_val, exc_tb):
self.file.close()
Класс MyFile имеет методы __enter__() и __exit__() которые определяют контекстное окружение. В методе __enter__() файл открывается с помощью функции open() и возвращается файловый объект. В методе __exit__() файл закрывается с помощью метода close().
Пример использования:
# Создаем экземпляр класса MyFile с указанием имени файла, режима и кодировки
with MyFile('file.txt', 'r', encoding='utf-8') as file:
# Выполняем операции с файлом
content = file.read()
print(content)
# Файл будет автоматически закрыт после окончания блока контекста
2)Вот пример реализации бесконечного итератора в Python:
class InfiniteIterator:
def __init__(self, start):
self.start = start
def __iter__(self):
return self
def __next__(self):
self.start += 1
return self.start - 1
Класс InfiniteIterator имеет методы __iter__() и __next__(), которые позволяют создать бесконечный итератор. Метод __iter__() возвращает сам объект, а метод __next__() возвращает следующее значение в последовательности при каждом вызове.
Пример использования:
# Создаем экземпляр класса InfiniteIterator с указанием начального значения
my_iterator = InfiniteIterator(0)
# Используем цикл for для прохождения по бесконечному итератору
for i in my_iterator:
print(i)
if i > 10: # Прерываем цикл после 10 итераций
break
Цикл for будет продолжаться бесконечно, так как класс InfiniteIterator представляет бесконечную последовательность чисел, начиная с указанного начального значения.