Найти тему
programmer's notes (python and more)

ООП на Python. Иерархия методов. Приложение к видео 5

Оглавление

Доброго времени суток, читатели, зрители моего канала programmer's notes.

Приложение к уроку

Иерархия функций (методов) в ООП Python

Начать следует с того, что есть просто функции, которые как известно тоже являются объектами. Но они выступают просто как экземпляры класса Функции.

Обычные методы

Дальше мы пойдём, я бы сказал снизу. Это функции, относящиеся к конкретному объекту класса или обыкновенные методы. Ниже представлены такие методы. Но есть нюанс! Всё, что внутри класса, можно попытаться использовать и с помощью имени класса. Просто при вызове сами (ручками) передаём тот объект, относительно которого, мы будем использовать метод (см. пример ниже). Отсюда следует, что для того, чтобы использовать такой метод, нужен созданный объект? Но это не точно ;). В случае с методом my(), можно, например, использовать просто None, ведь никакие свойства объекта там не используются. Вот такие интересные вещи всплывают.

Текст программы ниже
Текст программы ниже
primer202.py

Результат выполнения программы

100
Экземпляр
100

Статические методы

Чрезвычайно интересный тип методов. Статические методы. В сущности предполагается, что класс в данном случае просто определяет пространство имён для таких методов (функций). Чтобы определить такой метод используется так называемый декоратор @staticmethod. О декораторах мы еще поговорим в своё время. Но вот метод после декоратора и является статическим методом. Обратим внимание (см. ниже), что статический метод можно вызвать и через имя класса и через имя объекта. Конечно, это несколько вносит путаницу для начинающих, но, это очень логично для интерпретируемого языка, для которого весь класс является частью программы.

Но есть нюанс. Если убрать декоратор, то это всё равно будет статическим методом, но вызвать его с помощью имени объекта уже будет нельзя. Ну, а с помощью имени класса, конечно, можно.

Текст программы ниже
Текст программы ниже
primer203.py

Результат выполнения программы

10
10

Методы класса

Методы класса, интересная вещь. Используется декоратор @classmethod. В чем тут фокус? При обращении к такому методы не явно первым параметром передаётся имя класса (см. ниже). Т.е. параметру cl автоматически присваивается значение Myclass.

Текст программы ниже
Текст программы ниже
primer204.py

Результат выполнения программы

10
10

Ещё один пример на методы класса. Чем он интересен. Можно дополнительно передать имя объекта и для этого объекта в методе класса вызывать методы объекта. Да, вот так. ООП, конечно, замечательное. Я без иронии — мне это нравится.

Текст программы ниже
Текст программы ниже
primer205.py

Результат выполнения программы

Экземпляр
Экземпляр
10
Экземпляр
10

В заключении как напоминание

Иерархия функций
Иерархия функций

Всего наилучшего. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.

Уберите лишний код и программа заработает
Уберите лишний код и программа заработает