Объектно-ориентированный Python - Введение

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

В этой главе рассказывается об особенностях языка программирования Python, которые делают его объектно-ориентированным языком программирования.

Схема классификации языкового программирования

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

Классы Langauage Категории Langauages
Парадигма программирования Процедурный C, C ++, C #, Objective-C, java, Go
Сценарии CoffeeScript, JavaScript, Python, Perl, Php, Ruby
Функциональный Clojure, Eralang, Haskell, Scala
Класс компиляции Статический C, C ++, C #, Objective-C, java, Go, Haskell, Scala
Динамический CoffeeScript, JavaScript, Python, Perl, Php, Ruby, Clojure, Erlang
Тип Класс Сильный C #, java, Go, Python, Ruby, Clojure, Erlang, Haskell, Scala
Слабый C, C ++, C #, Objective-C, CoffeeScript, JavaScript, Perl, Php
Класс памяти Удалось Другие
Неуправляемый C, C ++, C #, Objective-C

Что такое объектно-ориентированное программирование?

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

Python, объектно-ориентированное программирование (ООП), представляет собой способ программирования, который фокусируется на использовании объектов и классов для проектирования и создания приложений. Основными столпами объектно-ориентированного программирования (ООП) являются Inheritance, Polymorphism, Abstraction, объявление Encapsulation.

Объектно-ориентированный анализ (OOA) - это процесс изучения проблемы, системы или задачи и определения объектов и взаимодействий между ними.

Почему стоит выбрать объектно-ориентированное программирование?

Python был разработан с использованием объектно-ориентированного подхода. ООП предлагает следующие преимущества -

  • Предоставляет четкую структуру программы, которая упрощает отображение реальных проблем и способов их решения.

  • Облегчает обслуживание и модификацию существующего кода.

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

  • Представляет собой хорошую основу для библиотек кода, где поставляемые компоненты могут быть легко адаптированы и изменены программистом.

  • Обеспечивает возможность повторного использования кода

Процедурное и объектно-ориентированное программирование

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

В таблице на следующем изображении показаны основные различия между подходами POP и OOP.

Разница между процедурно-ориентированным программированием (POP) и. Объектно-ориентированное программирование (ООП).

Процедурно-ориентированное программирование Объектно-ориентированного программирования
На основе В Pop все внимание сосредоточено на данных и функциях Упс основан на реальном сценарии. Вся программа разделена на небольшие части, называемые объектами.
Возможность повторного использования Ограниченное повторное использование кода Повторное использование кода
Подход Нисходящий подход Объектно-ориентированный дизайн
Спецификаторы доступа Ни один Общедоступный, частный и защищенный
Перемещение данных Данные могут свободно перемещаться от функций к функциям в системе В Oops данные могут перемещаться и взаимодействовать друг с другом через функции-члены
Доступ к данным В pop большинство функций использует глобальные данные для обмена, к которым можно получить свободный доступ от функции к функции в системе. В Oops данные не могут свободно перемещаться от метода к методу, они могут быть публичными или частными, поэтому мы можем контролировать доступ к данным.
Скрытие данных В поп, такой специфический способ скрыть данные, немного менее безопасный Он обеспечивает скрытие данных, что намного безопаснее
Перегрузка Невозможно Функции и перегрузка оператора
Примеры языков C, VB, Фортран, Паскаль C ++, Python, Java, C #
Абстракция Использует абстракцию на уровне процедуры Использует абстракцию на уровне класса и объекта

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

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

Давайте вкратце разберемся с каждым из столпов объектно-ориентированного программирования -

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

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

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

Наследование, также называемое обобщением, позволяет нам фиксировать иерархические отношения между классами и объектами. Например, «фрукт» - это обобщение слова «апельсин». Наследование очень полезно с точки зрения повторного использования кода.

Абстракция

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

Полиморфизм

Полиморфизм означает множество форм. То есть вещь или действие присутствует в разных формах или способами. Хороший пример полиморфизма - перегрузка конструктора в классах.

Объектно-ориентированный Python

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

Модули против классов и объектов

Модули похожи на «Словари»

При работе с модулями обратите внимание на следующие моменты -

  • Модуль Python - это пакет для инкапсуляции кода многократного использования.

  • Модули находятся в папке с __init__.py файл на нем.

  • Модули содержат функции и классы.

  • Модули импортируются с использованием import ключевое слово.

Напомним, что словарь - это key-valueпара. Это означает, что если у вас есть словарь с ключомEmployeID и вы хотите получить его, тогда вам придется использовать следующие строки кода -

employee = {“EmployeID”: “Employee Unique Identity!”}
print (employee [‘EmployeID])

Вам придется работать над модулями со следующим процессом -

  • Модуль - это файл Python с некоторыми функциями или переменными в нем.

  • Импортируйте нужный вам файл.

  • Теперь вы можете получить доступ к функциям или переменным в этом модуле с помощью символа '.' (dot) Оператор.

Рассмотрим модуль с именем employee.py с функцией в нем называется employee. Код функции приведен ниже -

# this goes in employee.py
def EmployeID():
   print (“Employee Unique Identity!”)

Теперь импортируйте модуль, а затем получите доступ к функции EmployeID -

import employee
employee. EmployeID()

Вы можете вставить в него переменную с именем Age, как показано -

def EmployeID():
   print (“Employee Unique Identity!”)
# just a variable
Age = “Employee age is **”

Теперь получите доступ к этой переменной следующим образом -

import employee
employee.EmployeID()
print(employee.Age)

Теперь сравним это со словарем -

Employee[‘EmployeID’] # get EmployeID from employee
Employee.employeID() # get employeID from the module
Employee.Age # get access to variable

Обратите внимание, что в Python есть общий шаблон -

  • Взять key = value контейнер стиля

  • Получите что-нибудь по имени ключа

При сравнении модуля со словарем оба похожи, за исключением следующего:

  • В случае dictionary, ключ - это строка, а синтаксис - [ключ].

  • В случае module, ключ - это идентификатор, а синтаксис - .key.

Классы похожи на модули

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

Если вам нужно создать класс, похожий на модуль сотрудника, вы можете сделать это, используя следующий код -

class employee(object):
   def __init__(self):
      self. Age = “Employee Age is ##”
   def EmployeID(self):
      print (“This is just employee unique identity”)

Note- Классы предпочтительнее модулей, потому что вы можете повторно использовать их такими, какие они есть, без особого вмешательства. В то время как с модулями у вас есть только один со всей программой.

Объекты похожи на мини-импорт

Класс похож на mini-module и вы можете импортировать так же, как и для классов, используя концепцию под названием instantiate. Обратите внимание, что когда вы создаете экземпляр класса, вы получаетеobject.

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

this_obj = employee() # Instantiatethis_obj.EmployeID() # get EmployeId from the class
print(this_obj.Age) # get variable Age

Вы можете сделать это любым из следующих трех способов:

# dictionary style
Employee[‘EmployeID’]
# module style
Employee.EmployeID()
Print(employee.Age)
# Class style
this_obj = employee()
this_obj.employeID()
Print(this_obj.Age)