Print this page

August 18th, 2021
Author: Simon Schaffer

Тема 12 ООП подробнее Python Express Course

В классах-потомках создают одноименные методы, но уже с соответствующей реализацией. И это логично, ведь например, процесс постройки Частного и Многоквартирного дома отличается кардинально. К примеру, для строительства Многоквартирного дома необходимо задействовать башенный кран, а Частный дом можно построить и собственными силами. При этом данный процесс все равно остается процессом строительства. Когда мы имеем дело с составным объектом – мы прибегаем к абстракции.

основные принципы ооп python

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

Принцип подстановки Барбары Лисков

Просто представьте, что будет, если возможность наследования исчезнет. В этом случае пришлось бы копировать свойства и методы класса-родителя в класс-потомок. А что, если с течением времени вам потребуется внести изменение в код базового класса? А что, если изменений тоже не одно, а например, 100? Думаю, что теперь вы убеждены, что наследование не зря является базовым принципом объектно-ориентированного программирования.

основные принципы ооп python

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

Объектно-ориентированное программирование в Python.

Аналогично, существующий класс является базовым классом (или родительским классом). Обычно дочерний класс как-то расширяет функционал базового класса, является доработкой на базе первоначального класса. Все определения классов начинаются с ключевого слова class, за которым следует имя класса и двоеточие. Любой код, расположенный с отступом ниже определения класса, считается частью тела класса. Говоря иначе, класс — это как форма или анкета. Экземпляр — это как форма, заполненная информацией.

Машина — это абстрактная концепция, которую также реализуют в Toyota, Honda, Ferrari, и других компаниях. Соответственно, https://deveducation.com/ болид можно запустить, остановить, ускорить, и так далее. Гонщик может быть еще одним объектом в Формуле-1.

основные принципы ооп python

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

Другие специальные методы

Это представление человека обрезанное до основных характеристик. Использование одного и того же программного кода с разными данными. Классы позволяют создавать множество объектов, каждый из которых имеет собственные значения атрибутов. Нет потребности вводить множество переменных, т.к объекты получают в свое распоряжение индивидуальные так называемые пространства имен. Теперь эта функция не интересуется типами передаваемых ей объектов. Всё, что она знает о типах — это то, что обрабатываемые ей объекты должны принадлежать классу Animal или его подклассам.

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

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

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

Именно они определяют, какие методы будут использоваться для их обработки. Данные первичны, код для обработки этих данных – вторичен. Это в основном, когда у подкласса есть метод с тем же именем и параметрами метода в родительском классе, эти методы находятся в разных формах (переопределение метода). Как видите, здесь нет абсолютно никаких деталей реализации, не говорится, как собака должна лаять, шевелить хвостом или есть. Сказав это, теперь у нас есть возможность создавать разные классы собак, которые подчиняются одному и тому же контракту.

Множественное наследование

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

В примере выше тело класса состоит из одного оператора pass. Он нужен для того, чтобы интерпретатор Python не выдавал ошибку. Фактически это пустой класс, у которого нет ни атрибутов (характеристик), ни методов. Наследование позволяет сделать отдельный класс «Самолет», который будет наследником класса «Транспорт».

Конструктором в ООП называют метод класса, который вызывается автоматически при создании объекта от этого класса. В то же время конструктор относится к методам перегрузки операторов. Имена таких методов регламентированы самим языком программирования, а их вызов происходит автоматически при участии объекта в тех или иных операциях. Например, сложении, извлечении элемента и др. Ключевыми понятиями объектно-ориентированного программирования являются “класс” и “объект”. В языке программирования Python такие объекты принято называть экземплярами.

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

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

В выдаче вы увидите выведенное значение 1, 2 и 3, поскольку для каждого объекта значение переменной car_count увеличивается и отображается на экране. Ключевое слово class используется для создания класса в Python. Название класса следует за ключом class, за которым следует двоеточие. Тело класса начинается с новой строки, с отступом на одну вкладку влево.

Он сохраняет атрибуты класса «Транспорт» (год выпуска, цвет), но при этом получает новые — размах крыльев. Суть объектно-ориентированного программирования (ООП) очевидно раскрывается в его названии. Эта парадигма предлагает представлять все компоненты программы как объекты из реальной жизни. У каждого такого объекта есть характеристики и он выполняет определенные функции. Не делайте всё самостоятельно, делегируйте это в соответствующий класс.

The utopian dreams of Russian-style cybernetic communism could only be turned into everyday reality within the made-in-the-USA global village.