Loading
Giu 25, 2024

Объектно-ориентированное программирование ️ Python 3 с примерами кода

Сильными сторонами Python являются его модульность и возможность интегрироваться с другими языками программирования, в том числе в составе сложных комплексных приложений и систем[194]. Сочетание простоты и лаконичности с большим количеством возможностей делает Python удобным в качестве скриптового языка[источник не указан 916 дней]. Некоторые проекты реализуют базовую часть на более производительных языках программирования, а для упрощения работы предоставляют полноценный интерфейс прикладного программирования на Python[источник не указан 916 дней]. Агентство национальной безопасности США использует Python для анализа данных, а NASA использует его при выполнении научных задач[186]. На Python написана также свободная популярная программа нарезки 3D моделей для печати на 3D-принтерах Cura[200][201].

  • Объектно-ориентированное программирование помогает представлять содержимое программы наиболее естественным для нашего мира способом.
  • Это не проблема, так как точка в
    выражении self.name обозначает, что существует нечто с именем “name”,
    являющееся частью объекта “self”, и другое name — локальная переменная.
  • Hasattr, getattr, setattr и delattr, которые позволяют атрибутам объекта манипулировать их строковыми именами.
  • Получившийся экземпляр имеет структуру и поведение, жёстко заданные его классом.
  • Если мы добавим/изменим какую-либо
    функциональность в SchoolMember, это автоматически отобразится и во всех
    подтипах.

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

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

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

объектно ориентированное программирование python

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

Система отступов[править править код]

Встроенные типы и их методы имеют синтаксическую поддержку в языке Python или другие особые «привилегии». Конечно, любая операция может быть представлена синтаксисом вызова функции, однако, для частого применения это неудобно. Явно указав имя класса, можно обратиться объектно ориентированное программирование к методу родителя (как впрочем и любого другого объекта). Для использование полиморфизма мы создали общий интерфейс — функцию flying_test(). В качестве аргумента она принимает любой объект, после чего происходит вызов его собственного метода fly().

объектно ориентированное программирование python

По умолчанию состояние объекта — это все, что записано в его полях. Пользовательские классы могут управлять сериализацией, предоставляя состояние объекта явным образом (методы __getstate__, __setstate__ и др.). Последний из методов — .__str__() — отвечает за представление экземпляра класса при печати оператором print и в других подобных случаях.

Что такое self?

Объект аргумента в классе MyClass включает наследование класса и будет обсуждаться в следующих главах. Pass в приведенном выше коде указывает, что этот блок пуст, то есть это определение пустого класса. Когда мы утверждаем поведение и состояние класса вместе, это означает, что класс упаковывает функции и переменные. Если вам требуется поведение для манипулирования кортежем, вам нужно передать кортеж в функцию (или метод другого объекта), которая выполняет действие. Список представляет наиболее универсальный тип структуры данных в Python.

Классы Teacher и Student называют производными
классами или подклассами4. Обратите внимание, что метод sayHi не
принимает параметров, но тем не менее, имеет self в определении функции. Затем мы определяем новый метод инициализатора, который берет все свойства Shoeи добавляет уникальное waterproofсвойство. Теперь мы посмотрим, как инициализировать объекты и установить значения свойств для представления каждой пары обуви. Чтобы избежать этих проблем, разработчики Python часто используют ООП вместо других доступных парадигм.

Статический метод[править]

Мы также увидели ряд достоинств и “подводных камней”
объектно-ориентированного программирования. Python — в высокой степени
объектно-ориентирован, поэтому понимание этих принципов очень поможет вам
в дальнейшем. Здесь же мы видим, как можно вызывать методы базового класса, предваряя
запись имени метода именем класса, а затем передавая переменную self
вместе с другими аргументами. Объекты могут хранить данные в обычных переменных, которые принадлежат
объекту. Переменные, принадлежащие объекту или классу, называют
полями.

объектно ориентированное программирование python

На практике с областями видимости и связыванием имён связано несколько правил «хорошего тона», о которых можно подробнее узнать из документации. Разработчики языка Python придерживаются определённой философии программирования, называемой «The Zen of Python» («Дзен Пито́на», или «Дзен Па́йтона»)[62]. Её текст выдаётся интерпретатором Python по команде import this (работает один раз за сессию). Python предлагает поддержку функционального программирования в традициях Лиспа. Так, в Python есть функции filter, map и reduce; также из Лиспа были заимствованы понятия характеристик списков, ассоциативных массивов (словарей), множеств и генераторов списков[60]. Стандартная библиотека содержит два модуля (itertools и functools), реализующие инструменты, заимствованные из Haskell и Standard ML[61].

Как научиться программировать на Python максимально быстро и качественно?

В объектно-ориентированном программировании, наследование означает отношение IS-A. Наследование это одна из самых удивительных концепций объектно-ориентированного программирования, так как оно подразумевает повторное использование. Так как name является публичной переменной, мы можем получить к ней доступ не из класса. В выдаче вы увидите значение переменной name, выведенное в консоли. В выдаче вы увидите выведенное значение 1, 2 и 3, поскольку для каждого объекта значение переменной car_count увеличивается и отображается на экране.

История[править править код]

Далее мы создаём объект-экземпляр класса, записывая имя класса со скобками. Для
проверки мы выясняем тип переменной, просто выводя её на экран. Так мы
видим, что у нас есть экземпляр класса Person в модуле __main__.