3.18M
Category: programmingprogramming

18. Классы Конец

1.

2023
Название программы
Python
Тема занятия
Классы:
Конец
Изображение от Storyset на Freepik.com

2.

2023
План
занятия
Python
Введение
Теория Атрибуты и Self
Теория Конструктор
Теория Кошки
Практика
Автобусы
Домашнее задание
Итоги
Изображение от Storyset на Freepik.com

3.

2023
Python
Проверяем
домашнее задание
1
Какие трудности возникли
при написании кода?
3
2
В чём смысл использования
классов в коде?
4
Какой информации не хватило
для выполнения задания?
Что больше всего
понравилось/не понравилось
в процессе выполнения задания?

4.

2023
Python
Введение
Сегодня мы изучим две темы:
переменная self и конструкторы —
специальные методы классов, которые
помогут нам создать свой первый проект.
Изображение от Storyset на Freepik.com

5.

2023
Теория
Атрибуты и Self
Python

6.

2023
Python
Теория
Теперь, когда мы научились создавать
и использовать классы, пора научиться задавать
им настоящие атрибуты, и в этом нам поможет
переменная self.
Она является служебной и работает только
внутри класса — это ссылка на сам объект
этого класса, то есть, на самого себя.
Её обязательно использовать
при создании атрибутов класса,
теперь они будут делаться вот так:
self.название_переменной = значение
Изображение от Storyset на Freepik.com

7.

2023
Теория
Такой атрибут присваивается каждому экземпляру
класса и будет считаться свойством экземпляра.
А это значит, что такие свойства объекта,
как цвет, размер, здоровье, урон и др.
можно записывать в отдельные атрибуты.
self.color = "Blue"
self.size = "Big"
self.health = 100
self.dmg = 24
Python

8.

2023
Теория
Конструктор
Python

9.

2023
Python
Теория
Конструктором называют метод класса,
который вызывается автоматически
при создании экземпляра класса.
В этом методе прописывают необходимые
настройки для класса — именно в нем
мы должны создавать атрибуты.
Такой процесс называется инициализацией,
поэтому и имя метод носит такое:
__init__(self)
class Automatic:
def __init__(self):
print("Началась инициализация!")
self.time = 30
self.name = "Будильник"
duzz = Automatic()

10.

2023
Python
Теория
При создании экземпляра duzz мы видим
в консоли сообщение о удачной инициализации.
Это произошло автоматически, даже
не вызывая метод вручную. Именно после
инициализации у экземпляров
класса Automatic появляются свойства.
Для начала, нужно создать так называемые
обязательные аргументы класса,
в них мы будем вписывать значения.
class Parrot:
def __init__(self, color, size):
Ещё одной важной особенностью конструкторов
является передача данных из кода в класс.
Это значит, что мы можем задавать настройки
для конструктора класса.
color и size — обязательные аргументы
конструктора, без них нельзя будет создать
экземпляр класса!.

11.

2023
Теория
Если мы попытаемся создать экземпляр
класса без них, Python выдаст нам ошибку:
Traceback (most recent call last):
File "D:\Repoes\teacher\test.py", line 18, in <module>
kesha = Parrot()
TypeError: Parrot...init() missing 2 required positional arguments: 'color' and 'size'
Python

12.

2023
Python
Теория
Создадим экземпляр и введем значения
обязательных аргументов класса:
kesha = Parrot ("зелёный", "маленький")
Далее необходимо сохранить полученные
данные в экземпляре, чтобы они не потерялись.
Сделать это можно таким образом:
class Parrot:
def __init__(self, color, size):
self.color= color
self.size = size
Обрати внимание, что переменные self.color
и color — разные переменные. 1-я переменная
экземпляра, а 2-я переменная из конструктора.

13.

2023
Python
Далее создадим метод, который будет
использовать получившиеся в конструкторе
атрибуты, например, научим попугая чирикать:
class Parrot:
def __init__(self, color, size):
self.color= color
self.size = size
def chirik(self):
print(f"«Чирик, Чирик!» - сказал {self.size} {self.color} попугай.")
kesha = Parrot("зелёный", "маленький")
Вызовем чириканье именно
у экземпляра kesha и посмотрим результат:
kesha = Parrot("Зелёный", "маленький")
kesha.chirik()

14.

2023
Теория
Кошки
Python

15.

2023
Python
Теория
Чтобы лучше понять принцип работы
self и конструкторов, давай рассмотрим
пример на кошках. Представим всех кошек
как экземпляров класса Cat.
Все кошки имеют мурчало, которым
они издают всеми любимые звуки. Пусть это
мурчало активируется методом .sound().
Мы хотим, чтобы экземпляры класса Cat
начинали мурчать тогда, когда их гладят —
переменная love == True.
Изображение от Storyset на Freepik.com

16.

2023
Python
Теория
Напишем условную конструкцию, внутри
нужно активировать мурчало. Если мы
вызовем метод .sound() у всего
класса Cat, то мяукнут все коты разом.
Значит, запись Cat.sound() — неверная.
Но мы хотим чтобы мурчал только наш кот,
для этого нужно использовать переменную
self — она представляет ссылку на текущий
экземпляр класса Cat.
Это значит, что команда self.sound() будет
верной и мурчать начнет только один кот.
Изображение от Storyset на Freepik.com

17.

2023
Практика
Автобусы
Python

18.

2023
Нужно запрограммировать автобус
таким образом, чтобы он останавливался
только на своих остановках.
Список остановок должен храниться в словаре.
Для реализации автобуса используй ООП:
Классы и экземпляры.
Решение:
Начнём с простого, создадим
словарь с двумя маршрутами.
trip = {
13: ("Гостиный двор", "ГДК", "Магазин Гипер", "Галерея"),
25: ("Парк Победы", "Улица Ленина", "Главная площадь", "Речное депо")
}
Python

19.

2023
Python
Практика
Каждый маршрут представляет из себя
кортеж с остановками, ключ — номер маршрута.
Создадим класс Автобуса, в конструкторе
сохраним номер маршрута в атрибут
и создадим функцию навигатора,
в которую выгрузим только наш маршрут.
class Bus:
def __init__(self, trip):
self.trip = trip
def navigator (self):
line = trip[self.trip]
Обрати внимание на переменную line —
она не имеет приставки self, потому что
не относится к экземпляру, а является
временной переменной, которая существует
только в момент работы функции navigator().
Такие переменные называются локальными.

20.

2023
Практика
Чтобы навигатор работал, дадим ему
переменную для номера остановки — stop.
Функция будет выводить в консоль название
остановки, соответствующей номеру.
Заполнять эту переменную
будет цикл во внешнем коде.
def navigator(self, stop):
line = trip[self.trip]
print(f"Автобус {self.trip} прибыл на остановку {line[stop]}")
Python

21.

2023
Python
Практика
Так как остановок всего 4,
то и цикл будет в диапазоне 4.
Пора создать экземпляр класса, назначить
ему номер маршрута и отправить в путь
в нашем цикле:
go = Bus(13)
for num in range(4):
go.navigator(num)
Результат поездки виден в консоли:

22.

2023
Python
Практика
Давай запустим и второй автобус тоже.
go = Bus(13)
speedy = Bus(25)
for num in range(4):
go.navigator(num)
speedy.navigator(num)
Результат поездки:

23.

2023
Python
Домашнее
задание
Создай класс главного героя своей будущей
игры в жанре RPG. Не забудь назначить ему
все необходимые атрибуты: здоровье, урон,
имя и другие, какие захочешь.
Создай экземпляр получившегося класса
и выведи в консоль все его атрибуты.
Задание считается выполненным, если
в консоли отобразились как минимум
три свойства главного героя:
имя, здоровье и урон
Изображение от Storyset на Freepik.com
English     Русский Rules