Классы¶
Класс — шаблон, описывающий правила создания и поведение объекта.
Объект — экземпляр, созданный на основе шаблона.
Поле — используется для хранения значения.
Метод — функция, связанная с классом.
Магический метод — зарезервированные методы, отвечающие за поведение объекта.
Преобразование к строке str(obj)
class Person: # Объявление класса def __init__(self, name, age): # Метод инициализации или по другому конструктор self.age = age # Установка значений полей self.name = name def __str__(self): return f"self.name> is self.age> years old" person = Person('John', 20) # Создание экземпляра person.name = 'James' # Установка значения поля print(person)
Здесь __init__ определяет как будет создаваться новый объект и какие параметры будет принимать при создании.
__str__ определяет как экземпляр будет печататься на экране с помощью функции print и преобразовываться к строке с помощью str .
Задачи¶
- Создать класс, описывающий человека. Должны быть поля для имени, фамилии и возраста. Создать экземпляр и вывести информацию о человеке.
- Доработать предыдущий класс, чтобы вся информация о человеке была доступна при вызове str над экземпляром.
- Добавить метод greet, вызов которого будет выводить в консоль информацию о человеке в формате «Привет! Меня зовут Петров Василий, мне 12 лет» .
- Добавить поле grades , в котором будет храниться список оценок. Создать список учеников, заполняя оценки каждого случайными числами.
- Вывести информацию об учениках в порядке убывания среднего балла. Подсчёт среднего балла вынести в отдельный метод.
- Создайте класс Point , экземпляры которого будут создаваться из координат x и y .
- Создайте класс прямоугольник — Rectangle . Метод __init__ принимает две точки — левый нижний и правый верхний угол. Каждая точка представлена экземпляром класса Point . Реализуйте методы вычисления площади и периметра прямоугольника.
- Добавьте в класс Rectangle метод contains . Метод принимает точку и возвращает True , если точка находится внутри прямоугольника и False в противном случае.
© Copyright Revision d00c0df4 .
Versions latest Downloads html On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.
10.5. Самостоятельная работа¶
При выполнении заданий используйте заготовки решений: -> Репозиторий.
В данном разделе НЕ должны использоваться сторонние модули для реализации заданной функциональности. Например, при реализации класса Дата не нужно использовать готовый модуль datetime и т.д.
10.5.1. Простой класс¶
Выберите класс под номером ЦИФРА_СБ + 1 (Таблица 10.5.1).
Таблица 10.5.1 — Классы и их описание (простой класс) ¶
Геометрический вектор на плоскости
Прежде чем перейти к написанию кода:
- изучите предметную область объекта и доступные операции;
- для каждого поля и метода продумайте его область видимости, а также необходимость использования свойств.
При реализации класс должен содержать:
- __init__(self, . ) — инициализация с необходимыми параметрами;
- __str__(self) — представление объекта в удобном для человека виде;
- специальные методы для возможности сложения, разности и прочих операций, которые класс должен поддерживать;
- поля, необходимые для выбранного класса;
- метод save(self, filename) — сохраняет объект в JSON-файл filename ;
- метод load(self, filename) — загружает объект из JSON-файла filename ;
- прочие методы (не менее 3-х) и свойства, выявленные на этапе изучения класса.
Реализуйте класс в отдельном модуле, а также создайте main.py , который бы тестировал все его возможности.
10.5.2. Класс-контейнер¶
Создайте класс-контейнер, который будет содержать набор объектов из предыдущей задачи. Например, класс VectorCollection будет содержать объекты класса Vector .
Для класса-контейнера предусмотрите:
- __init__(self, . ) — инициализация с необходимыми параметрами;
- __str__(self) — представление объекта в удобном для человека виде;
- __getitem__() — индексация и срез для класса-контейнера.
- поле _data — содержит набор данных;
- метод add(self, value) — добавляет элемент value в контейнер;
- метод remove(self, index) — удаляет элемент из контейнера по индексу index ;
- метод save(self, filename) — сохраняет объект в JSON-файл filename ;
- метод load(self, filename) — загружает объект из JSON-файла filename .
10.5.3. Иерархия классов¶
Выберите вариант под номером (ЦИФРА_СБ % 5) + 1 (Таблица 10.5.2).
Таблица 10.5.2 — Иерархия классов ¶
Плеер, АудиоПлеер, ВидеоПлеер, DvdПлеер
ПищущаяПринадлежность, Карандаш, Ручка, ГелеваяРучка
ТранспортноеСредство, ВодноеТС, КолесноеТС, Автомобиль
ДенежныйПеревод, ПочтовыйПеревод, БанковскийПеревод, ВалютныйПеревод
ПроезднойБилет, БезлимитныйБилет, БилетСОграничением, БилетСОграничениемПоездок
- выстройте классы в иерархию, продумайте их общие и отличительные характеристики и действия;
- добавьте собственную реализацию методов базового класса в каждый из классов, предусмотрев:
- необходимые параметры для базовых методов (например, в метод воспроизведения в Dvd-плеере можно передать абстрактный DVD-диск);
- необходимые поля для функционирования базовых методов (например, при остановке Dvd-плеера имеет смысл сохранить текущую позицию воспроизведения); классы должны содержать как минимум по одному общедоступному, не общедоступному и закрытому полю/методу;
- вывод на экран работы метода (например, вызов метода остановки в Dvd-плеере должен сообщать на экране, что плеер установлен на определенной позиции).
Реализуйте все классы в отдельном модуле, а также создайте main.py , который бы тестировал все его возможности.
По согласованию иерархия может быть расширена или выбрана самостоятельная индивидуальная тема для данной задачи.
Версия: 2023. Обновлено: 16.05.2023.
Класс Python — Упражнения, практика, решение
3. Напишите класс Python, чтобы найти правильность строки скобок, ‘(‘, ‘)’, », ‘[‘ и ‘]. Эти скобки должны быть закрыты в правильном порядке, например, «()» и «() [] <>» допустимы, но «[)», «(
4. Напишите класс Python, чтобы получить все возможные уникальные подмножества из набора различных целых чисел. — Перейти к редактору
Вход: [4, 5, 6]
Вывод: [[], [6], [5], [5, 6], [4], [4, 6], [4, 5], [4, 5, 6]]
5. Напишите класс Python, чтобы найти пару элементов (индексы двух чисел) из данного массива, сумма которых равна конкретному целевому числу. — Перейти к редактору
Ввод: цифры = [10,20,10,40,50,60,70], цель = 50
Выход: 3, 4
6. Напишите класс Python, чтобы найти три элемента, которые суммируют до нуля из набора из n действительных чисел. — Перейти к редактору
Входной массив: [-25, -10, -7, -3, 2, 4, 8, 10]
Выход: [[-10, 2, 8], [-7, -3, 10]]
7. Напишите класс Python для реализации pow (x, n). — Перейти к редактору
8. Напишите класс Python, чтобы поменять строку слово за словом. — Перейти к редактору
Входная строка: ‘привет. Py’
Ожидаемый результат: ‘.py hello’
9. Напишите класс Python, который имеет два метода get_String и print_String. get_String принимает строку от пользователя и print_String печатает строку в верхнем регистре. — Перейти к редактору
Нажмите меня, чтобы увидеть решение
10. Напишите класс Python с именем Rectangle, построенный по длине и ширине, и метод, который будет вычислять площадь прямоугольника. — Перейти к редактору
Нажмите меня, чтобы увидеть решение
11. Напишите класс Python с именем Circle, построенный по радиусу, и два метода, которые будут вычислять площадь и периметр круга. — Перейти к редактору
Нажмите меня, чтобы увидеть решение
12. Напишите программу на Python, чтобы получить имя класса экземпляра в Python. — Перейти к редактору
Нажмите меня, чтобы увидеть решение
Редактор кода Python:
Еще не все !
Не отправляйте решение вышеупомянутых упражнений здесь, если вы хотите внести вклад, перейдите на соответствующую страницу упражнения.