{ "cells": [ { "cell_type": "markdown", "id": "9e725e75", "metadata": {}, "source": [ "# Файл с магическими методами #" ] }, { "cell_type": "markdown", "id": "4899791d", "metadata": {}, "source": [ "В этом задании вам нужно создать интерфейс для работы с файлами. Класс `File` должен поддерживать несколько необычных операций.\n", "\n", "Класс инициализируется полным путем." ] }, { "cell_type": "code", "execution_count": 32, "id": "f6f38438", "metadata": {}, "outputs": [], "source": [ "from file import File" ] }, { "cell_type": "code", "execution_count": 33, "id": "285d10f8", "metadata": {}, "outputs": [], "source": [ "obj = File(\"/tmp/file.txt\")" ] }, { "cell_type": "markdown", "id": "d5b3cceb", "metadata": {}, "source": [ "Класс должен поддерживать метод `write`." ] }, { "cell_type": "code", "execution_count": 34, "id": "457f1257", "metadata": {}, "outputs": [], "source": [ "obj.write(\"line\\n\")" ] }, { "cell_type": "markdown", "id": "0e5ca18a", "metadata": {}, "source": [ "Объекты типа `File` должны поддерживать сложение." ] }, { "cell_type": "code", "execution_count": 35, "id": "aee4e554", "metadata": {}, "outputs": [], "source": [ "first = File(\"/tmp/first\")\n", "second = File(\"/tmp/second\")\n", "\n", "new_obj = first + second" ] }, { "cell_type": "markdown", "id": "370a538c", "metadata": {}, "source": [ "В этом случае создается новый файл и файловый объект, в котором содержимое второго файла добавляется к содержимому первого файла. Новый файл должен создаваться в директории, полученной с помощью [tempfile.gettempdir](https://docs.python.org/3/library/tempfile.html \"11.6. tempfile — Generate temporary files and directories\"). Для получения нового пути можно использовать [os.path.join](https://docs.python.org/3/library/os.path.html#os.path.join \"1.2. os.path — Common pathname manipulations\").\n", "\n", "Объекты типа `File` должны поддерживать протокол итерации, причем итерация проходит по строкам файла." ] }, { "cell_type": "code", "execution_count": 36, "id": "8041194e", "metadata": {}, "outputs": [], "source": [ "for line in File(\"/tmp/file.txt\"):\n", " ..." ] }, { "cell_type": "markdown", "id": "c177c4f2", "metadata": {}, "source": [ "И наконец, при выводе файла с помощью функции `print` должен печататься его полный путь, переданный при инициализации." ] }, { "cell_type": "code", "execution_count": 37, "id": "0bc40684", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/tmp/file.txt\n" ] } ], "source": [ "obj = File(\"/tmp/file.txt\")\n", "\n", "print(obj)" ] }, { "cell_type": "markdown", "id": "b54fb2db", "metadata": {}, "source": [ "Опишите свой класс в скрипте." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.8" } }, "nbformat": 4, "nbformat_minor": 5 }