Программирование на Python. Изучение возможностей и синтаксиса Python: Классы и ООП. Часть 2. 15 занятие

Содержание

Слайд 2

6

Тема: Изучение возможностей и синтаксиса Python:
Классы и ООП. Часть 2. 

1.1

6 Тема: Изучение возможностей и синтаксиса Python: Классы и ООП. Часть 2.
Атрибуты объекта класса:
1.2 Атрибуты экземпляра класса:

ИЗУЧЕНИЕ ВОЗМОЖНОСТЕЙ И СИНТАКСИСА PYTHON:
КЛАССЫ И ООП. ЧАСТЬ 2.

 inginirium.ru

Слайд 3

7

Тема: Изучение возможностей и синтаксиса Python:
Классы и ООП. Часть 2. 

1.3

7 Тема: Изучение возможностей и синтаксиса Python: Классы и ООП. Часть 2.
Назначение атрибуту значения по умолчанию

ИЗУЧЕНИЕ ВОЗМОЖНОСТЕЙ И СИНТАКСИСА PYTHON:
КЛАССЫ И ООП. ЧАСТЬ 2.

 inginirium.ru

Слайд 4

8

Тема: Изучение возможностей и синтаксиса Python:
Классы и ООП. Часть 2. 

2.

8 Тема: Изучение возможностей и синтаксиса Python: Классы и ООП. Часть 2.
ИЗМЕНЕНИЕ ЗНАЧЕНИЙ АТРИБУТОВ
2.1 Прямое изменение значения атрибута
2.2 Изменение значения атрибута с использованием метода

ИЗУЧЕНИЕ ВОЗМОЖНОСТЕЙ И СИНТАКСИСА PYTHON:
КЛАССЫ И ООП. ЧАСТЬ 2.

 inginirium.ru

Слайд 5

Тема: Изучение возможностей и синтаксиса Python:
Классы и ООП. Часть 2. 

2.3

Тема: Изучение возможностей и синтаксиса Python: Классы и ООП. Часть 2. 2.3
Изменение значения атрибута с приращением

ИЗУЧЕНИЕ ВОЗМОЖНОСТЕЙ И СИНТАКСИСА PYTHON:
КЛАССЫ И ООП. ЧАСТЬ 2.

 inginirium.ru

9

Слайд 6

Тема: Изучение возможностей и синтаксиса Python:
Классы и ООП. Часть 2. 

3.

Тема: Изучение возможностей и синтаксиса Python: Классы и ООП. Часть 2. 3.
СТАТИЧЕСКИЕ И КЛАССОВЫЕ МЕТОДЫ
Согласно модели данных Python, язык предлагает три вида методов:
Статические
Классовые
Экземпляра класса
Понимание принципов их работы поможет в создании красивого и эффективного кода.

ИЗУЧЕНИЕ ВОЗМОЖНОСТЕЙ И СИНТАКСИСА PYTHON:
КЛАССЫ И ООП. ЧАСТЬ 2.

 inginirium.ru

10

Слайд 7

Тема: Изучение возможностей и синтаксиса Python:
Классы и ООП. Часть 2. 

3.

Тема: Изучение возможностей и синтаксиса Python: Классы и ООП. Часть 2. 3.
СТАТИЧЕСКИЕ И КЛАССОВЫЕ МЕТОДЫ

ИЗУЧЕНИЕ ВОЗМОЖНОСТЕЙ И СИНТАКСИСА PYTHON:
КЛАССЫ И ООП. ЧАСТЬ 2.

 inginirium.ru

11

Слайд 8

Тема: Изучение возможностей и синтаксиса Python:
Классы и ООП. Часть 2. 

3.1

Тема: Изучение возможностей и синтаксиса Python: Классы и ООП. Часть 2. 3.1
Методы экземпляра класса
Принимают объект класса (self) как первый аргумент
Количество параметров метода не ограничено
self позволяет менять состояние объекта и обращаться к другим его методам и параметрам
self.__class__ дает доступ к атрибутам класса и возможность менять состояние самого класса
То есть методы экземпляров класса позволяют менять как состояние определённого объекта, так и класса.
Встроенный пример метода экземпляра — str.upper():
>>> "welcome".upper() # <- вызывается на строковых данных
'WELCOME'

ИЗУЧЕНИЕ ВОЗМОЖНОСТЕЙ И СИНТАКСИСА PYTHON:
КЛАССЫ И ООП. ЧАСТЬ 2.

 inginirium.ru

12

Слайд 9

Тема: Изучение возможностей и синтаксиса Python:
Классы и ООП. Часть 2. 

3.2

Тема: Изучение возможностей и синтаксиса Python: Классы и ООП. Часть 2. 3.2
Методы класса
Методы класса принимают класс в качестве параметра, который принято обозначать как cls
Для обозначения используется декоратор classmethod
Методы класса привязаны к самому классу, а не его экземпляру!
То есть они могут менять состояние класса, что отразится на всех объектах этого класса, но не могут менять конкретный объект.
Встроенный пример метода класса — dict.fromkeys()— возвращает новый словарь с переданными элементами в качестве ключей.
>>> dict.fromkeys('AEIOU') # <- вызывается при помощи класса dict {'A': None, 'E': None, 'I': None, 'O': None, 'U': None}

ИЗУЧЕНИЕ ВОЗМОЖНОСТЕЙ И СИНТАКСИСА PYTHON:
КЛАССЫ И ООП. ЧАСТЬ 2.

 inginirium.ru

13

Слайд 10

Тема: Изучение возможностей и синтаксиса Python:
Классы и ООП. Часть 2. 

3.3

Тема: Изучение возможностей и синтаксиса Python: Классы и ООП. Часть 2. 3.3
Статические методы
Обозначаются при помощи декоратора staticmethod.
Им не нужен определённый первый аргумент (ни self, ни cls).
Их можно воспринимать как методы, которые “не знают, к какому классу относятся”.
Таким образом, статические методы прикреплены к классу лишь для удобства и не могут менять состояние ни класса, ни его экземпляра.

ИЗУЧЕНИЕ ВОЗМОЖНОСТЕЙ И СИНТАКСИСА PYTHON:
КЛАССЫ И ООП. ЧАСТЬ 2.

 inginirium.ru

14

Слайд 11

Тема: Изучение возможностей и синтаксиса Python:
Классы и ООП. Часть 2. 

3.4

Тема: Изучение возможностей и синтаксиса Python: Классы и ООП. Часть 2. 3.4
Конкретные примеры
метод instancemethod имеет доступ к объекту класса ToyClass через аргумент self

ИЗУЧЕНИЕ ВОЗМОЖНОСТЕЙ И СИНТАКСИСА PYTHON:
КЛАССЫ И ООП. ЧАСТЬ 2.

 inginirium.ru

15

Слайд 12

Тема: Изучение возможностей и синтаксиса Python:
Классы и ООП. Часть 2. 

3.4

Тема: Изучение возможностей и синтаксиса Python: Классы и ООП. Часть 2. 3.4
Конкретные примеры
Теперь давайте вызовем метод класса:
print(obj.classmethod())
Вывод:
('class method called', )
Мы видим, что метод класса classmethod() имеет доступ к самому классу ToyClass, но не к его конкретному экземпляру объекта.
Помните, в Python всё является объектом. Класс тоже объект, который мы можем передать функции в качестве аргумента.

ИЗУЧЕНИЕ ВОЗМОЖНОСТЕЙ И СИНТАКСИСА PYTHON:
КЛАССЫ И ООП. ЧАСТЬ 2.

 inginirium.ru

16

Слайд 13

Тема: Изучение возможностей и синтаксиса Python:
Классы и ООП. Часть 2. 

3.4

Тема: Изучение возможностей и синтаксиса Python: Классы и ООП. Часть 2. 3.4
Конкретные примеры
Вызовем статический метод:
print(obj.staticmethod())
Вывод:
static method called
То есть статические методы не могут получить доступ к параметрам класса или объекта. Они работают только с теми данными, которые им передаются в качестве аргументов.

ИЗУЧЕНИЕ ВОЗМОЖНОСТЕЙ И СИНТАКСИСА PYTHON:
КЛАССЫ И ООП. ЧАСТЬ 2.

 inginirium.ru

17

Слайд 14

Тема: Изучение возможностей и синтаксиса Python:
Классы и ООП. Часть 2. 

3.4

Тема: Изучение возможностей и синтаксиса Python: Классы и ООП. Часть 2. 3.4
Конкретные примеры
Теперь давайте вызовем те же самые методы, но на самом классе.
Метод класса и статический метод работают, как нужно. Однако вызов метода экземпляра класса выдаёт TypeError, так как метод не может получить на вход экземпляр класса.

ИЗУЧЕНИЕ ВОЗМОЖНОСТЕЙ И СИНТАКСИСА PYTHON:
КЛАССЫ И ООП. ЧАСТЬ 2.

 inginirium.ru

18

Слайд 15

Тема: Изучение возможностей и синтаксиса Python:
Классы и ООП. Часть 2. 

3.5

Тема: Изучение возможностей и синтаксиса Python: Классы и ООП. Часть 2. 3.5
Запомнить!
Методы экземпляра класса получают доступ к объекту класса через параметр self и к классу через self.__class__. 
Методы класса не могут получить доступ к определённому объекту класса, но имеют доступ к самому классу через cls. 
Статические методы работают как обычные функции, но принадлежат области имён класса. Они не имеют доступа ни к самому классу, ни к его экземплярам. 
Даже если вы программируете только ради интереса, изучение ООП в Python поможет писать код так, чтобы в дальнейшем было легче искать ошибки и использовать его повторно.

ИЗУЧЕНИЕ ВОЗМОЖНОСТЕЙ И СИНТАКСИСА PYTHON:
КЛАССЫ И ООП. ЧАСТЬ 2.

 inginirium.ru

19

Слайд 16

Тема: Изучение возможностей и синтаксиса Python:
Классы и ООП. Часть 2. 

4.

Тема: Изучение возможностей и синтаксиса Python: Классы и ООП. Часть 2. 4.
ДЕКОМПОЗИЦИЯ КОДА
4.1 Что такое декомпозиция?
Декомпозиция кода - процесс разбиения кода на независимые блоки - функции и классы.
4.2 Для чего нам нужно декомпозировать?
Для тестирования программного решения.
Протестировать программу по блокам (функциям, классам) проще и быстрее, нежели чем тестировать все программное решение целиком.

ИЗУЧЕНИЕ ВОЗМОЖНОСТЕЙ И СИНТАКСИСА PYTHON:
КЛАССЫ И ООП. ЧАСТЬ 2.

 inginirium.ru

20

Слайд 17

Тема: Изучение возможностей и синтаксиса Python:
Классы и ООП. Часть 2. 

ИЗУЧЕНИЕ

Тема: Изучение возможностей и синтаксиса Python: Классы и ООП. Часть 2. ИЗУЧЕНИЕ
ВОЗМОЖНОСТЕЙ И СИНТАКСИСА PYTHON:
КЛАССЫ И ООП. ЧАСТЬ 2.

 inginirium.ru

Упражнения
4. Посетители: начните с программы из упражнения 1. Добавьте атрибут number_served со значением по умолчанию 0; он представляет количество обслуженных посетителей . Создайте экземпляр с именем restaurant. Выведите значение number_served, потом измените и выведите снова. Добавьте метод с именем set_number_served(), позволяющий задать количество обслуженных посетителей. Вызовите метод с новым числом, снова выведите значение.
Добавьте метод с именем increment_number_served(), который увеличивает количество обслуженных посетителей на заданную величину. Вызовите этот метод с любым числом, которое могло бы представлять количество обслуженных клиентов — скажем, за один день.

21

Слайд 18

Тема: Изучение возможностей и синтаксиса Python:
Классы и ООП. Часть 2. 

ИЗУЧЕНИЕ

Тема: Изучение возможностей и синтаксиса Python: Классы и ООП. Часть 2. ИЗУЧЕНИЕ
ВОЗМОЖНОСТЕЙ И СИНТАКСИСА PYTHON:
КЛАССЫ И ООП. ЧАСТЬ 2.

 inginirium.ru

5. Попытки входа: добавьте атрибут login_attempts в класс User из упражнения 3. Напишите метод increment_login_attempts(), увеличивающий значение login_ attempts на 1. Напишите другой метод с именем reset_login_attempts(), обнуляющий значение login_attempts .
Создайте экземпляр класса User и вызовите increment_login_attempts() несколько раз. Выведите значение login_attempts, чтобы убедиться в том, что значение было изменено правильно, а затем вызовите reset_login_attempts(). Снова выведите login_attempts и убедитесь в том, что значение обнулилось.

22

Слайд 19

Тема: Изучение возможностей и синтаксиса Python:
Классы и ООП. Часть 2. 

6.

Тема: Изучение возможностей и синтаксиса Python: Классы и ООП. Часть 2. 6.
Киоск с мороженым: киоск с мороженым — особая разновидность ресторана . Напишите класс IceCreamStand, наследующий от класса Restaurant из упражнения 1 или упражнения 4. Подойдет любая версия класса; просто выберите ту, которая вам больше нравится. Добавьте атрибут с именем flavors для хранения списка сортов мороженого. Напишите метод, который выводит этот список. Создайте экземпляр IceCreamStand и вызовите этот метод.

ИЗУЧЕНИЕ ВОЗМОЖНОСТЕЙ И СИНТАКСИСА PYTHON:
КЛАССЫ И ООП. ЧАСТЬ 2.

 inginirium.ru

23