01 Apr Объектно-ориентированное программирование на Python
Здесь тело класса Dog пока состоит из одного оператора – ключевого слова-заполнителя pass. Заполнитель позволяет запустить этот код без вызова исключений. Если класс является планом, то экземпляр – это объект, который построен по этому плану. Например, 🐕 Майлз, которому недавно исполнилось четыре года.
Методы say_name и say_age позволяют объекту выводить на экран информацию о себе. Полиморфизм — это один из ключевых принципов объектно-ориентированного программирования. Слово «полиморфизм» происходит от греческих слов «poly» (много) и «morphos» (форма). Полиморфизм в ООП означает способность объектов с одинаковой сущностью выполнять различные действия в зависимости от контекста. Наследование классов позволяет избежать дублирования кода и упрощает разработку приложений. Оно также позволяет создавать иерархии классов для более эффективной организации кода и упрощения его понимания.
Создание объекта
Если один объект использует другой, он обязательно содержит ссылку на него. Если ссылающиеся друг на друга объекты удалить, то они уже не могут быть удалены интерпретатором Python с помощью механизма подсчета ссылок. Более того, полиморфизм в Python вообще не связан с наследованием, поэтому его можно считать сигнатурно-ориентированным полиморфизмом (signature-oriented polymorphism)[2]. Например, чтобы экземпляру класса «прикинуться» файловым объектом, ему достаточно реализовать методы, относящиеся к файлам (обычно .read(), .readlines(), .close() и т. Все значения в Python являются объектами, инкапсулирующими код (методы) и данные и предоставляющими пользователям общедоступный интерфейс.
- Кроме прочих своих достоинств, кот демонстрирует характерное поведение, реагирует на сообщения, наделён унаследованными реакциями и управляет своим, вполне независимым, внутренним состоянием.
- Родительский класс Drink поделился с потомком своими атрибутами и методами, так что нам не пришлось писать их заново.
- Все эти проверки совершаются только для пользовательских атрибутов.
- Это также позволяет повторно использовать код и упрощать дальнейшее его развитие.
Статические и классовые методы доступны без инстанцирования. В этой программе мы создаем два класса — Bird (родительский) и Penguin (дочерний). После этого мы объявили атрибуты — характеристики объекта. Один из популярных подходов к решению проблем — создание объектов.
Создание объектов экземпляра
Точно так же мы можем получить доступ к атрибутам экземпляра — kesha.name и kesha.age. Первоначально (например, в том же Smalltalk) взаимодействие объектов представлялось как «настоящий» обмен сообщениями, то есть пересылка от одного объекта другому специального объекта-сообщения. Она прекрасно подходит, например, для описания параллельных вычислений с помощью активных объектов, каждый из которых имеет собственный поток исполнения и работает одновременно с прочими.
Таким образом, создание класса позволяет упорядочить данные и функции в единую сущность и повторно использовать его в различных частях программы. В приведенном примере мы создали класс «Animal» и определили его свойства — имя и возраст. С помощью метода «def __init__» мы передаем значения этих свойств в класс. Таким образом, методы классов — это важный аспект ООП в Python, который позволяет группировать данные и функции, обрабатывающие эти данные в единый объект. Кроме переменных-членов, класс может содержать методы, которые могут изменять состояние объекта или возвращать данные, связанные с этим объектом.
Преимущества ООП
То есть __init__() инициализирует каждый новый экземпляр класса. Главным понятием ООП является понятие программного объекта. Вообще говоря, большинство сущностей на планете Земля — это некие объекты.
ООП – это парадигма, которая применяется практически во всех Python проектах. Невозможно представить хороший фреймворк или библиотеку, который не принципы ооп python будет её использовать. Так как именно ООП позволяет создавать проекты, которые будут легко поддерживаться, легко читаться и масштабироваться.
ООП на Python
Полиморфизм может быть использован в ООП для более гибкого и удобного проектирования классов. Python предоставляет простой способ наследования классов, используя ключевое слово class. При создании потомка необходимо указать имя родительского класса в круглых скобках после имени потомка.
На практике деструктор используется редко, в основном для тех ресурсов, которые требуют явного освобождения памяти при удалении объекта. В Python вы можете поучаствовать не только в создании объекта, но и в его удалении. Специально для этого предназначен метод-деструктор __del__. Все пользовательские атрибуты сохраняются в атрибуте __dict__, который является словарем. Программирование на Python допускает различные методологии, но в его основе лежит объектный подход, поэтому работать в стиле ООП на Python очень просто. Его суть заключается в том, что функциональность нового класса наследуются от уже существующего класса.
🤹 Введение в объектно-ориентированное программирование (ООП) на Python
ООП – модель программирования, согласно которой данные программы представляются в виде множества объектов. Последние, в свою очередь, имеют строгую иерархию наследования. Наследование – это процесс, при котором один класс принимает атрибуты и методы другого. Вновь созданные классы называются дочерними классами, а классы, от которых происходят дочерние классы, называются родительскими. Дочерние классы могут переопределять или расширять атрибуты и методы родительских классов. Методу __init__() можно передать любое количество параметров, но первым параметром всегда является автоматически создаваемая переменная с именем self.
При создании экземпляра Python сам передает новый экземпляр в виде параметра self в метод __init__(). Так что нам нужно беспокоиться только об аргументах name и age. Хотя a и b являются экземплярами класса Dog, они представляют собой два разных объекта. Иными словами, объектно-ориентированное программирование – это подход для моделирования вещей, а также отношений между вещами. ООП моделирует сущности реального мира в виде программных объектов, с которыми связаны некоторые данные и которые могут выполнять определенные функции.