Классы¶
Класс — шаблон, с помощью которого удобно описывать однотипные объекты. В классе соержатся свойства, правила создания и поведение объекта.
Объект — экземпляр, созданный на основе шаблона.
Атрибут — поле, хранящее значение. Содержит свойства объекта.
Метод — функция, связанная с классом. Описывает поведение или действия объекта.
Пример класса - автомобили, его атрибутами будут: цвет, марка автомобиля, регистрационный номер.
Методами могут быть: ехать прямо, повернуть, остановиться.
Объектом класса “Автомобили” может быть конкретный автомобиль, например, Renault Logan белого цвета с номером М123РТ.
Для чего нужны классы?
Классы помогают кратко и понятно описывать объекты и их поведение независимо от основного кода программы.
Затем в основном коде можно просто создавать объекты на основе классов и работать с ними, уже не описывая их свойств и поведения.
Такой подход делает код более читаемым и понятным, а также помогает избежать многих ошибок и багов.
Посмотреть слайды.
Синтаксис и правила создания классов¶
Для создания класса используется конструкция class ClassName
.
Согласно договорённостям имя класса всегда пишется с большой буквы.
Каждый класс должен содержать метод __init__
- с помощью этого метода создаётся объект класса.
В этом методе инициализируются атрибуты класса:
class Person: # Объявления класса
def __init__(self, name, age): # Метод инициализации
self.age = age # Установка значений атрибутов
self.name = name
Также в классах могут быть использованы встроенные методы, их называют магическими. Магические методы — зарезервированные методы, отвечающие за поведение объекта.
Название |
Применение |
---|---|
|
Инициализация объекта |
|
Преобразование к строке str(obj) |
|
Проверка на равенство |
|
Оператор доступа к элементам |
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)
Задачи¶
Создать класс, описывающий человека. Должны быть поля для имени, фамилии и возраста. Создать экземпляр и вывести информацию о человеке.
Доработать предыдущий класс, чтобы вся информация о человеке была доступна при вызове
str
над экземпляром.Добавить метод greet, вызов которого будет выводить в консоль информацию о человеке в формате
"Привет! Меня зовут Петров Василий, мне 12 лет"
.Добавить атрибут
grades
, в котором будет храниться список оценок. Создать список учеников, заполняя оценки случайными числами, и вывести информацию о них в порядке убывания среднего балла. Заполнение оценок и подсчёт среднего балла вынести в отдельные методы.Создайте класс прямоугольник —
Rectangle
. Метод__init__
принимает две точки — левый верхний и правый нижний угол. Каждая точка представлена экземпляром классаPoint
. Реализуйте методы вычисления площади и периметра прямоугольника.Добавьте в класс
Rectangle
методhas_point
. Метод принимает точку на плоскости и возвращаетTrue
, если точка находится внутри прямоугольника иFalse
в противном случае.Создайте класс фигура —
Figure
. Метод__init__
принимает число — количество строительных блоков фигуры. Каждый объект будет состоять из заданного количества строительных блоков. У класса должен быть методprint_figure
, который печатает фигуру. С использованием этого класса реализуйте программу, которая будет “строить стену” из случайного количества строительных блоков.
Пример:
Строительный блок: _ |_| Вывод: _ _ _ |_||_||_| _ _ |_||_| _ _ _ _ |_||_||_||_|