Концепция объектно-ориентированного программирования в Python

Опубликовано: 2020-12-01

Объектно-ориентированный — это парадигма программирования, в которой вместо функций и логики используется концепция классов и объектов. Он также известен как причудливый способ кодирования, который организует код таким образом, чтобы повысить удобочитаемость и удобство сопровождения кода. Концепция ООП является важной темой в программировании и помогает создавать повторно используемые модули для различных задач в науке о данных.

Это часто является обязательным условием при создании моделей глубокого обучения с использованием различных библиотек, таких как Pytorch, где базовая модель повторно используется для добавления пользовательских слоев. Давайте рассмотрим, чему учит эта концепция и как применять ее на практике.

Оглавление

Что такое концепция ООП?

Рассмотрим смартфон, который может быть любой марки, но это множество общих вещей среди всех них. У всех есть экраны, динамики, кнопки и на программном уровне почти все они работают под управлением Android. Теперь рассмотрим случай, когда каждая компания создает свое программное обеспечение с нуля, даже ядро, которое управляет большинством аппаратных компонентов.

Это стало бы утомительным и дорогостоящим процессом, что привело бы к увеличению стоимости устройств. Что, если есть абстрактная или обобщенная модель, которую любой производитель может изменять со временем в соответствии со своими требованиями? Эта концепция пытается захватить этот метод на основе классов, где код структурирован в классах с различными методами доступа.

Что такое классы и объекты?

Классы — это чертежи того, что должно быть реализовано. Если мы рассмотрим наш предыдущий пример, у нас могут быть функции для вызова человека, приема звонков, сообщений, воспроизведения музыки или выполнения некоторых других действий.

Все эти вещи являются общими для каждого смартфона, их внутренняя работа также схожа, и их можно рассматривать как класс функций смартфона или класс. Объекты могут быть определены как все бренды смартфонов, которые будут использовать эту общую реализацию в своих продуктах с модификациями.

Может быть несколько экземпляров этого базового класса, и каждый экземпляр может содержать различное состояние значений, не мешая другим объектам. В Python класс можно объявить с помощью зарезервированного ключевого слова class. Далее конструктор __init__ используется для инициализации переменных класса.

класс Компания:

защита __init__ (сам):

self.name = 'upGrad'

def отображаемое_имя (я):

print(f"Название компании: {self.name}")

см = Компания()

см.display_name()

Читайте также: Зарплата разработчиков Python в Индии

Различные столпы ООП

Теперь, когда мы знакомы с основными строительными блоками этой парадигмы, давайте рассмотрим некоторые из наиболее важных особенностей/характеристик этой концепции:

Инкапсуляция

Это означает, что методы (или функции) класса и связанные с ним данные инкапсулированы или защищены от случайного или внешнего доступа. Это означает, что атрибуты, определенные в частной или защищенной области, недоступны за пределами класса.

Для Python есть опасения, что в этом языке нет концепции закрытых переменных, поэтому атрибуты доступны вне класса.

Существует способ распознать частные атрибуты, используя двойное подчеркивание в начале объявления, и если вы попытаетесь получить доступ к этому вне класса через его объект, вам будет предложено AttributeError, потому что Python применяет искажение имени всякий раз, когда он обнаруживает частная переменная. Это не обеспечивает безопасности ваших атрибутов, потому что они по-прежнему доступны.

Наследование

Как следует из самого слова, он переносит часть существующего класса, называемого родительским классом, в новый класс, называемый дочерним классом, практически без изменений. Мы можем связать это с нашим примером таким образом, что все бренды смартфонов наследуют общий класс телефона, который поможет им выполнять основные функции, а также они могут добавлять свои дополнительные коды для улучшения взаимодействия с пользователем в соответствии со своими потребностями. В Python наследование класса выполняется следующим образом:

класс А:

некоторый контент

класс Б(А):

содержимое производного класса

Существует еще одна концепция, связанная с наследованием, называемая переопределением функций. Предположим, что функция камеры стандартного смартфона не так хороша, и у производителя есть лучшее решение для этого. Они могут напрямую переопределить эту функцию, снова определив ее в дочернем классе и применив изменения там.

Абстракция

Он определяет план или интерфейс для реализации подклассов. Это означает, что некоторые методы определены в базовом классе, который не полностью реализован, и определено только абстрактное представление. Это может помочь в отслеживании различных функций создаваемого модуля и подмодулей.

Например, некоторые смартфоны поддерживают NFC (подключение в ближнем поле), и эта функциональность может быть определена в базовом классе, а ее реализация может быть закодирована в дочернем классе полученного телефона. Таким образом, абстрактный базовый класс может обеспечить общее представление модуля и последующих реализаций. Вот пример:

Телефон класса:

камера защиты (я):

проходить

защита NFC (я):

проходить

класс Xyz(телефон):

защита NFC (я):

вернуть Истина

Узнайте о: Лучшие инструменты Python

Полиморфизм

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

Это также можно назвать перегрузкой функций, но здесь есть одна загвоздка в языке Python. Мы не можем определить функции с одним и тем же именем с разными аргументами, и если это сделано, то учитывается только последняя запись.

Практические примеры использования ООП

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

Шаблоны Jinja: Если у вас есть некоторый опыт работы с фреймворком Python Flask, который обрабатывает маршруты и на стороне сервера, этот шаблон помогает обрабатывать эти данные во внешнем интерфейсе. Как правило, создается базовый файл HTML, который затем наследуется всеми страницами, чтобы иметь одинаковый макет на всем веб-сайте.

Приложения Kivy: это библиотека, которая позволяет создавать кроссплатформенные (Android и IOS) приложения Python с графическим интерфейсом, и здесь большая часть программирования основана на концепции ООП.

ORM: Object-relational Mappers предлагает способ определения реляционных баз данных в коде приложения с использованием любого языка. Например, в Django вы можете определять разные типы моделей, используя классы для разных типов пользователей.

Заключение

В этой статье мы обсудили, что такое концепция ООП, ее строительные блоки (классы и объекты), различные столпы и выделили несколько примеров, где эта парадигма принята. Существует множество мест, где этот метод программирования рассматривается из-за лучшего управления кодом, совместной работы и предоставления абстрактных функций другим программам, зависящим от этого.

Если вам интересно узнать о python и науке о данных, ознакомьтесь с дипломом PG IIIT-B и upGrad по науке о данных, который создан для работающих профессионалов и предлагает более 10 тематических исследований и проектов, практические семинары, наставничество с отраслевыми экспертами, Индивидуальные встречи с отраслевыми наставниками, более 400 часов обучения и помощь в трудоустройстве в ведущих фирмах.

Что такое ООП?

Объектно-ориентированное программирование, сокращенно ООП, представляет собой метод компьютерного программирования, который организует проекты программного обеспечения в соответствии с данными, а не в соответствии с функциями и логикой. ООП фокусируется на объектах, т. е. на полях данных с определенными свойствами и поведением, которыми разработчики хотят управлять, а не на логике, необходимой для управления ими. Этот метод программирования идеален для больших и сложных приложений, которые постоянно обновляются или поддерживаются. ООП охватывает инициативы по производству, дизайну и мобильным приложениям. Другими преимуществами этого языка являются повторное использование кода, масштабируемость и эффективность.

Какие существуют языки в ООП?

Объектно-ориентированные языки программирования составляют несколько наиболее часто используемых языков кодирования в современной компьютерной индустрии. Языки ООП встречаются повсюду. Эти языки используют объекты, содержащие как данные, так и код. Инкапсуляция, абстракция, полиморфизм и наследование — это идеи объектно-ориентированного программирования. Популярные объектно-ориентированные языки программирования включают Java, Python, C++, Lisp и Perl. Они помогают программировать, используя парадигму классов и объектов. Другими языками, поддерживающими принципы объектно-ориентированного программирования, являются Perl, Objective-C, Dart, Lisp, JavaScript и PHP.

Почему ООП предпочтительнее?

Есть много причин, по которым ООП предпочтительнее. Разработчики могут повторно использовать объектно-ориентированный код. Вы также можете использовать наследование для дублирования информации и функций, которые были созданы ранее. Это экономит время, упрощает код, экономит место и упрощает кодирование. Поскольку большая часть кода находится в одном месте, вызывается и используется повторно, его значительно легче поддерживать. Хотя большинство языков предлагают определенный уровень безопасности, объектно-ориентированные языки более удобны, поскольку инкапсуляция включает в себя безопасность. Объектно-ориентированные языки программирования делят программу на объекты и классы. Это выгодно, поскольку предоставляет вашему приложению более модульную структуру.