Концепции ООП Python: Введение в ООП
Из классов мы получаем экземпляры, созданные по подобию этого класса. Обратите внимание на первый аргумент – self – общепринятое имя для ссылки на объект, в контексте которого вызывается метод. Этот параметр обязателен и отличает метод класса от обычной функции. Но каждый язык используется в одном или нескольких направлениях.
Чтобы проверить свои знания в Python, вы можете пройти наш тест на знание языка. Получить доступ к атрибуту класса можно так — __class__.species. Точно так же мы можем получить доступ к атрибутам экземпляра — kesha.name и kesha.age.
Сквозной пример по классам
Язык не вызовет у вас проблем, а после его изучения и некоторых других технологий, вы можете начать поиск работы или же перейти к изучению следующего языка. Первое с чего нужно начать изучение — это синтаксис или правила, которые описывают, как писать код на том или ином языке. Для этого программу разбивают на независимые блоки, которые мы называем объектами. Ещё в Python есть поддержка ООП — объектно-ориентированного программирования, но про это мы ниже поговорим отдельно.
- Слово self общепринятое, но не обязательное, вместо него можно использовать любое другое.
- Он обычно используется таким образом, когда вам нужно инициализировать значения атрибута при создании экземпляра класса.
- Стоит упомянуть, что статические методы могут иметь доступ только к атрибутам класса в Python, вы не сможете обратиться к методам через self.
- Вы всегда можете переопределить ваши родительские методы класса.
- Класс, который наследует другой класс, называется дочерним классом или производным классом, и класс, который дает наследие, называется родительским, или основным.
Прямая связь объектно-ориентированного программирования с реальным миром помогает глубже понимать устройство и принципы работы, как самого языка, так и написания кода в целом. Инкапсуляция — это ещё один принцип, который нужен для безопасности и управления сложностью кода. Инкапсуляция блокирует доступ к деталям сложной концепции. Абстракция подразумевает возможность рассмотреть объект с общей точки зрения, а инкапсуляция не позволяет рассматривать этот объект с какой-либо другой. Это способность одного класса расширять понятие другого, и главный механизм повторного использования кода в ООП. На уровне абстракции « Автотранспорт » мы не учитываем особенности каждого конкретного вида транспортного средства, а рассматриваем их « в целом ».
Компонентное программирование[править править код]
Как только платформа полностью устаревает и перестаёт использоваться (например, Windows 95), прекращается её поддержка в новых версиях языка. Как отмечает большинство разработчиков, когда начинаются разговоры про Python, — у него безупречный и аккуратный код. Чтобы оформить любой логический блок, например содержимое функции, просто используют отступы и пробелы. Не нужно проверять, не потерялась ли по пути лишняя скобка — всё видно сразу. Одна команда занимает одну строку, поэтому разделители команд тоже не нужны. Чтобы процесс обучения объектно-ориентированному программированию был последовательным и не занял слишком много времени, выберите один курс из предложенных и полностью пройдите его.
Кто-то умеет создавать программы в десятки тысяч строк, а кто-то только изучил первый язык. Я советую вам начать с языка «Python», так как он имеет низкий порог вхождения, легкий синтаксис, огромное сообщество, универсален и востребован на данный момент. Моей первой книгой стала «A Byte Of Python» или же «Укус питона» от «Swaroop». Она обьясняет все основные моменты языка, представляет практику и дает очень хороший буст по этому языку.
Объектно-ориентированное программирование
Для этого ему в качестве первого (а иногда и единственного) аргумента передается имя переменной, связанной с объектом (можно сказать, передается сам объект). Чтобы в описании класса указать передаваемый в дальнейшем объект, используется параметр self. Мы сразу сделали атрибуты класса-потомка закрытыми и объявили для них https://deveducation.com/ собственные методы. А также добавили метод getTreat(), которого нет в классе-родителе. Нам всё ещё нужно получать доступ к атрибутам, поэтому мы предоставляем его через @property и объявляем для каждого атрибута свой метод — breed, color, age. В каждом из этих методов мы возвращаем значение нашего закрытого атрибута.
Доступ к данным объекта должен контролироваться, чтобы пользователь не мог изменить их в произвольном порядке и что-то поломать. Поэтому для работы с данными программисты пишут методы, которые можно будет использовать вне класса и которые ничего не сломают внутри. Двойные символы подчеркивания в таких методах, как __init__() и __str__() указывают на то, что они имеют предопределенное поведение. Есть множество более сложных методов, которые вы можете использовать для настройки классов в Python, но это тема отдельной публикации. Множество объектов со схожими свойствами формируются в классы. Идея класса также является одной из основополагающих концепций ООП.
Перегрузка метода
ООП позволяет сократить время на написание исходного кода, однако ООП всегда предполагает большую роль предварительного анализа предметной области, предварительного проектирования. От правильности решений на этом предварительном этапе зависит куда больше,чем от непосредственного написания исходного кода. Слово self общепринятое, но не обязательное, вместо него можно использовать любое другое. Однако это может запутать тех, кто будет читать ваш код.
Также мы используем функцию super() внутри метода __init__(). Это позволяет запускать метод __init__() родительского класса внутри дочернего. Они аналогичны методам экземпляров, но выполняются не в контексте объекта, а в контексте самого класса (классы – это тоже объекты).
Ссылки[править править код]
Большое значение имеет правильное построение иерархии классов. Одна из известных проблем больших систем, построенных по ООП-технологии — так называемая проблема хрупкости базового класса. Даже если вносимые изменения не затронут интерфейс базового класса, изменение его поведения может непредсказуемым образом отразиться на классах-потомках. Например, у нас есть класс «Кошка», обладающий атрибутами «порода», «окрас», «возраст» и методами «мяукать», «мурчать», «умываться», «спать». Присваивая атрибутам определённые значения, можно создавать вполне конкретные объекты.
В идеале вы должны определять свои классы в отдельном файле, а затем импортировать их в основной файл программы с помощью оператора import . В инициализаторе класса Juice присваивается значение атрибуту taste. Возможность игнорировать ооп python уровни доступа — нарушение важного для ООП принципа инкапсуляции. Поэтому, несмотря на наличие технической возможности, программисты, пишущие на Python, договорились не обращаться к защищённым и приватным методам откуда-то извне.