Введение в объектно-ориентированное программирование (ООП) на Python |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2020-09-27 18:01 Объектно-ориентированное программирование– это метод структурирования программ путем объединения связанных свойств и методов в отдельные объекты. В этом руководстве мы познакомимся с основами объектно-ориентированного программирования на языке Python. Материал будет полезен абсолютным новичкам в ООП на Python. Чтобы проверить свои знания в Python, вы можете пройти наш тест на знание языка. Текст публикации представляет собой незначительно сокращенный перевод статьи Дэвида АмосаObject-Oriented Programming (OOP) in Python 3. Интерактив Текст адаптирован в виде блокнота Jupyter, который можно запустить в интерактивном виде онлайн в среде Colab. Другие адаптированные таким образом тексты доступны в GitHub-репозитории. Что собой представляет объектно-ориентированное программирование в Python? Объектно-ориентированное программирование (ООП) – это парадигма программирования, которая предоставляет средства структурирования программ таким образом, чтобы их свойства и поведение были объединены в отдельные объекты. Например, объект может представлять человекасвойствами«имя», «возраст», «адрес» иметодами(поведением) «ходьба», «разговор», «дыхание» и «бег». Или электронное письмо описывается свойствами «список получателей», «тема» и «текст», а также методами «добавление вложений» и «отправка». Иными словами, объектно-ориентированное программирование – это подход для моделирования вещей, а также отношений между вещами. ООП моделирует сущности реального мира в виде программныхобъектов, с которыми связаны некоторые данные и которые могут выполнять определенные функции. Другой распространенной парадигмой программирования являетсяпроцедурное программирование, которое структурирует программу подобно рецепту. Такая программа предоставляет набор шагов в виде функций и блоков кода, которые последовательно выполняются для выполнения задачи. Определим класс в Python Примитивные структуры данных, такие как числа, строки и списки, предназначены для представления простых фрагментов информации: стоимость яблока, название стихотворения, список любимых цветов. Но бывает, что информация имеет более сложную структуру. Допустим, вы хотите отслеживать работу сотрудников. Необходимо хранить основную информацию о каждом сотруднике: Ф.И.О., возраст, должность, год начала работы. Один из способов это сделать – представить каждого сотрудника в виде списка: У этого подхода есть ряд проблем. Во-первых, ухудшаетсячитаемость кода. Чтобы понять, что Во-вторых, возрастает вероятность ошибки. В приведенном коде в списке Отличный способ сделать такой тип кода более удобным – использовать классы. Классы и экземпляры Итак, для создания пользовательских структур данных используются классы. Классы определяют функции, называемые методами класса. Методы описывают поведение – те действия, которые объект, созданный с помощью класса, может выполнять с данными. В этом туториале в качестве примера мы создадим класс Нужно понимать, что класс – это только план того, как что-то должно быть определено. Сам класс не содержит никаких данных. Класс Если класс является планом, то экземпляр – это объект, который построен по этому плану. Он содержит реальные данные, это настоящая собака. Например, ? Майлз, которому недавно исполнилось четыре года. Другая аналогия: класс – это бланк анкеты. Экземпляр – анкета, которую заполнили ?. Подобно тому как люди заполняют одну и ту же форму своей уникальной информацией, так из одного класса может быть создано множество экземпляров. Обычно бланк анкеты сам по себе не нужен, он используется лишь для удобства оформления информации. Как определить класс Все определения классов начинаются с ключевого слова Здесь тело класса Примечание Имена классов Python принято записывать в нотации Определим свойства, которые должны иметь все объекты Свойства, которые должны иметь все объекты класса Методу Обновим класс В теле
Атрибуты, созданные в С другой стороны, можно создатьатрибуты класса– атрибуты, которые имеют одинаковое значение для всех экземпляров класса. Вы можете определить атрибут класса, присвоив значение имени переменной вне Атрибуты класса определяются после имени класса. Им всегда должно быть присвоено начальное значение. Используйте атрибуты класса для определения свойств, которые должны иметь одинаковое значение для каждого экземпляра класса, а атрибуты экземпляров – для тех данных, которые отличают один экземпляр от другого. Теперь, когда у нас есть класс Создание экземпляра класса в Python Временно воспользуемся простейшим описанием класса, с которого мы начали: Создание нового экземпляра класса похоже на вызов функции: В памяти компьютера по указанному после Важно, что следующий экземпляр Хотя Атрибуты класса и экземпляра Теперь возьмем последнюю рассмотренную нами структуру класса: Для создания экземпляров объектов класса необходимо указать кличку и возраст собаки. Если мы этого не сделаем, то Python вызовет исключение Чтобы передать аргументы, помещаем значения в скобки после имени класса: Но ведь в описании класса При создании экземпляра Python сам передает новый экземпляр в виде параметра После того как экземпляры созданы, записанные данные доступны в виде атрибутов экземпляра: Одним из важных преимуществ использования классов для организации данных является то, что экземпляры гарантированно имеют ожидаемые атрибуты. У всех экземпляров Dog гарантировано есть атрибуты Значения атрибутов могут изменяться динамически: Экземпляры не зависят друг от друга. Изменение атрибута класса у одного экземпляра не меняет его у остальных экземпляров: Методы экземпляра Методы экземпляра – это определенные внутри класса функции, которые могут вызываться из экземпляра этого класса. Так же, как и у метода Мы добавили два метода экземпляра, возвращающих строковые значения. Метод В приведенном примере К примеру, когда вы создаете объект списка, вы можете использовать для отображения функцию Посмотрим, что произойдет, когда мы попробуем применить В большинстве практических приложений информация о расположении объекта в памяти не очень полезна. Поведение объекта при взаимодействии с функцией Двойные символы подчеркивания в таких методах, как Наследование от других классов в Python Наследование – это процесс, при котором один класс принимает атрибуты и методы другого. Вновь созданные классы называются дочерними классами, а классы, от которых происходят дочерние классы, называются родительскими. Дочерние классы могут переопределять или расширять атрибуты и методы родительских классов. Пример: место для выгула собак Представьте, что вы в парке, где разрешено гулять с собаками. В парке много собак разных пород, и все они ведут себя по-разному. Предположим, что вы хотите смоделировать парк собак с классами Python. Класс Мы можем изменить класс Смоделируем несколько псов разных пород: У каждой породы собак поведение несколько отличаются. Например, разные породы по-разному лают: одни говорят «гав», другие делают «вуф». Используя только класс Передавать строку в каждый вызов метод Один из вариантов упростить взаимодействие с классом Создаём дочерние классы Создадим дочерние классы для каждой из перечисленных пород. Так как порода теперь будет определяться дочерним классом, её нет смысла указывать в родительском классе: Связь между родительским и дочерним классом определяется тем, что наследуемый класс ( Дочерние классы действуют так же, как родительский класс: Экземпляры дочерних классов наследуют все атрибуты и методы родительского класса: Чтобы определить, к какому классу принадлежит определенный объект, используйте встроенную функцию Чтобы определить, является ли Объекты Все объекты дочернего класса являются экземплярами родительского класса, но не других дочерних классов. Теперь дадим нашим собакам немного полаять. Расширяем функциональность родительского класса Что мы хотим сделать: переопределить в дочерних классах пород метод Мы переопределили метод Мы по-прежнему можем передать какой-то иной звук: Изменения в родительском классе автоматически распространяются на дочерние классы. Если только изменяемый атрибут или метод не был переопределен в дочернем классе. Иногда бывает необходимо учесть и поведение родительского класса, и дочернего, например, вызвать аналогичный метод родительского класса, но модифицировать его поведение. Для вызова методов родительского класса есть специальная функция Здесь при вызове Обратите внимание В приведенных примерах иерархия классов очень проста. Класс Заключение Итак, в этом руководстве мы разобрали базовые понятия объектно-ориентированного программирования (ООП) в Python. Мы узнали:
*** Данный материал мы подготовили при поддержке компании GeekBrains — нашего партнёра, предоставляющего помощь в освоении Python. Если вы хотите получит навыки, необходимые для разработки на Python, не тратя лишнее время и силы на поиск знаний, инструментов и привыкание к разному стилю чтения курсов, обратите внимание на факультет Python-разработки. Программа и преподаватели имеют высокие оценки учащихся, а при успешном прохождении курса онлайн-университет гарантирует не только диплом, но и трудоустройство. Интересно, хочу посмотреть Источники Источник: proglib.io Комментарии: |
|