fbpx

Нередко в процессе написания кода выясняется, что некоторые объекты аналогичны другим за исключением нескольких различий. Определение сходств и различий между такими объектами называется «наследованием». Аналог этого ключевого слова в других языках — слово this. Self — это всего лишь ссылка на текущий экземпляр класса. Вы уже поняли, что у каждого класса есть собственный набор характеристик, который помогает описывать его сущность. Это способность одного класса расширять понятие другого, и главный механизм повторного использования кода в ООП.

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

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

Основные принципы ООП в языке Python

Множество объектов со схожими свойствами формируются в классы. Идея класса также является одной из основополагающих концепций ООП. Со стороны программы, класс — это всего лишь тип данных, но для программиста это куда более глубокая абстрактная структура. Эти методы могут эмулировать поведение встроенных классов, но при этом они необязательно существуют у самих встроенных классов. Например, у объектов int при сложении не вызывается метод __add__.

ооп python

Они аналогичны методам экземпляров, но выполняются не в контексте объекта, а в контексте самого класса  (классы – это тоже объекты). Такие методы создаются с помощью декоратора @classmethod и требуют обязательную ссылку на класс (cls). Объекты пользователя создаются с помощью ключевого слова class. Экземпляр – это конкретный объект, созданный на основе конкретного класса. Например, в примере выше мы создали объект lst, это экземпляр объекта list.

Доступ к атрибутам класса

Глобальная переменная определяется вне любого блока, то есть метода, операторов-if, и тому подобное. Доступ к глобальной переменной может быть получен где угодно в классе. В скрипте выше, мы переопределили метод __str__ , предоставив наше собственное определение метода. Теперь, если вы выведите объект car_a, вы увидите сообщение «Car class Object» в консоли. Это сообщение, которое мы внесли в наш пользовательский метод __str__ . В скрипте выше мы создали класс под названием Square со статичным методом get_squares().

ооп python

Поэтому мы и передаём в этот метод «породу», «окрас» и «возраст». Классы могут передавать свои атрибуты и методы классам-потомкам. Например, мы хотим создать новый класс «Домашняя кошка». Он практически идентичен классу «Кошка», но у него появляются новые атрибуты «хозяин» и «кличка», а также метод «клянчить вкусняшку».

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

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

ооп python

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

Наследование от других классов в Python

Сериализация pickle — не единственная возможная, и подходит не всегда. Для сериализации, не зависящей от языка программирования, можно использовать, например, XML. В основе сериализации объекта стоит представление его состояния. По умолчанию состояние объекта — это все, что записано в его полях.

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

Встроенные атрибуты класса

Вообще говоря, большинство сущностей на планете Земля — это некие объекты. И с частью из них мы взаимодействуем при помощи программирования. Банковский счёт, персонаж компьютерной игры или анимированный виджет сайта — всё это легко представить в виде объектов.

Методы

На уровне абстракции «Автотранспорт» мы не учитываем особенности каждого конкретного вида транспортного средства, а рассматриваем их «в целом». Если же более детализировано приглядеться, например, к грузовикам, то окажется, что у них есть такие свойства и возможности, которых нет ни у легковых, ни у пассажирских машин. Но, при этом, они всё ещё обладают всеми другими характеристиками, присущими автотранспорту. У класса есть свойства и функции (в ООП их называют методами). Для объявления класса Parrot мы использовали ключевое слово class.