Классы

Класс — шаблон, с помощью которого удобно описывать однотипные объекты. В классе соержатся свойства, правила создания и поведение объекта.

  • Объект — экземпляр, созданный на основе шаблона.

  • Атрибут — поле, хранящее значение. Содержит свойства объекта.

  • Метод — функция, связанная с классом. Описывает поведение или действия объекта.

Пример класса - автомобили, его атрибутами будут: цвет, марка автомобиля, регистрационный номер.

Методами могут быть: ехать прямо, повернуть, остановиться.

Объектом класса “Автомобили” может быть конкретный автомобиль, например, Renault Logan белого цвета с номером М123РТ.

Для чего нужны классы?

Классы помогают кратко и понятно описывать объекты и их поведение независимо от основного кода программы.

Затем в основном коде можно просто создавать объекты на основе классов и работать с ними, уже не описывая их свойств и поведения.

Такой подход делает код более читаемым и понятным, а также помогает избежать многих ошибок и багов.

Посмотреть слайды.

Синтаксис и правила создания классов

Для создания класса используется конструкция class ClassName. Согласно договорённостям имя класса всегда пишется с большой буквы.

Каждый класс должен содержать метод __init__ - с помощью этого метода создаётся объект класса. В этом методе инициализируются атрибуты класса:

class Person:  # Объявления класса
    def __init__(self, name, age): # Метод инициализации
        self.age = age   # Установка значений атрибутов
        self.name = name

Также в классах могут быть использованы встроенные методы, их называют магическими. Магические методы — зарезервированные методы, отвечающие за поведение объекта.

Название

Применение

__init__

Инициализация объекта

__str__

Преобразование к строке str(obj)

__eq__

Проверка на равенство ==

__getitem__

Оператор доступа к элементам |
some_dict[‘item’] |

Пример:

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)

Задачи

  1. Создать класс, описывающий человека. Должны быть поля для имени, фамилии и возраста. Создать экземпляр и вывести информацию о человеке.

  2. Доработать предыдущий класс, чтобы вся информация о человеке была доступна при вызове str над экземпляром.

  3. Добавить метод greet, вызов которого будет выводить в консоль информацию о человеке в формате "Привет! Меня зовут Петров Василий, мне 12 лет".

  4. Добавить атрибут grades, в котором будет храниться список оценок. Создать список учеников, заполняя оценки случайными числами, и вывести информацию о них в порядке убывания среднего балла. Заполнение оценок и подсчёт среднего балла вынести в отдельные методы.

  5. Создайте класс прямоугольник — Rectangle. Метод __init__ принимает две точки — левый верхний и правый нижний угол. Каждая точка представлена экземпляром класса Point. Реализуйте методы вычисления площади и периметра прямоугольника.

  6. Добавьте в класс Rectangle метод has_point. Метод принимает точку на плоскости и возвращает True, если точка находится внутри прямоугольника и False в противном случае.

  7. Создайте класс фигура — Figure. Метод __init__ принимает число — количество строительных блоков фигуры. Каждый объект будет состоять из заданного количества строительных блоков. У класса должен быть метод print_figure, который печатает фигуру. С использованием этого класса реализуйте программу, которая будет “строить стену” из случайного количества строительных блоков.

Пример:

Строительный блок:
         _
        |_|
Вывод:
          _  _  _
         |_||_||_|
          _  _
         |_||_|
          _  _  _  _
         |_||_||_||_|