Bezdepbonusu7Программирование: статьи и ответы

Введение в ООП на примере Python🖥️

Архив Bezdepbonusu75 мин чтения

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

Мы разделим этот урок на 2 части, в первой мы рассмотрим, что такое ООП в теоретическом плане, а затем в практическом.

Начнем с самого начала: что означает ООП? Это означает объектно-ориентированное программирование. Теоретически ООП - это метод программирования, созданный для противодействия спагетти-коду. Например, если вы моделируете популяцию без ООП, вы создаете массив с именем Population, а внутри этого массива и другой массив в качестве первого элемент имя, затем фамилия, затем возраст и т. д. ... . В ООП вы создадите массив с именем Population, и в этом массиве будут объекты с именем Persons, и этот объект Persons будет содержать все свойства людей. Другой большой частью ООП является наследование, это означает возможность создавать и возражать с теми же свойствами другого объекта, а затем добавлять к нему другой элемент. В нашем примере мы можем захотеть создать объект Child, который наследует свойства объекта Persons и имеет другие свойства, такие как любимые игрушки.

В большинстве языков программирования ООП реализуется довольно похожим образом: вы определяете свой "класс" или "структуру", который является объектом, затем имя объекта, например Persons. Затем внутри вы сможете создавать экземпляры общедоступных и частных переменных, которые будут доступны или нет вне вашего объекта. Мы рекомендуем сделать все ваши переменные закрытыми и использовать методы для доступа к ним. Существует 3 типа методов: геттеры, сеттеры и другие типы.

Тип геттера используется для получения данных нашего объекта. Мы создаем собственный метод, чтобы наши переменные повышали безопасность (например, проверяли, есть ли у пользователя доступ к этим данным) и изменяли данные, чтобы они были понятны человеку.

Как вы уже догадались, тип установки позволяет установить данные нашего объекта. И, как и в случае с геттером, мы создаем пользовательский метод для повышения безопасности, и мы можем захотеть проверить, является ли тип данных правильным (например, переменная, содержащая имя, не может быть числом).

Другой тип находится между ними. Например, если у нас есть объект, который представляет человека, мы можем создать метод, который будет определять, понравится ли человеку объект или нет, этот метод не будет устанавливать никаких данных. strong> и будет получать любые данные, он будет создавать данные в зависимости от состояния объекта

Теперь самое интересное. Идем кодить, наконец!!!

В качестве примера мы собираемся создать объект собаки.

Мы собираемся создать объект с ключевым словом "класс", а затем по соглашению назовем класс собаки заглавной буквой:

Теперь мы собираемся создать метод __init__, который будет вызываться при инициализации объекта:

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

Теперь мы собираемся закодировать методы getters:

а теперь методы setters:

В сеттере мы помещаем множество условий, чтобы убедиться, что записанное значение имеет правильный тип. Но теперь у нас есть проблема, методы __init__ не имеют этой функции безопасности, поэтому мы собираемся использовать сеттеры, которые мы определили в __init__. Просто так :

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

Теперь мы можем захотеть иметь метод, который говорит нам, является ли собака чистой породой.

Как вы видели, мы храним породу в массиве, поэтому, например, акита-ину и шетландская порода хорошо сочетаются в переменной породы "Акита-ину" и "Шетландская".

Итак, для метода, который возвращает true, если собака чистой породы, нам нужно проверить, равно ли количество пород в массиве единице. Просто так:

И теперь, чтобы закончить создание объекта, мы добавим функцию печати. Мы хотим, чтобы наш объект мог быть представлен в виде строки, для этого мы добавляем метод __str__, который будет вызываться для преобразования нашего объекта в строку. И это выглядит так:

Теперь пришло время использовать этот объект.

Чтобы создать переменную с использованием объекта, мы просто называем объект его именем. В нашем случае объект называется Dog. В python мы затем помещаем круглые скобки только в том случае, если вызываем функцию, а затем помещаем переменную, которую мы добавили в метод __init__. В нашем случае параметром будет имя, возраст, порода и окрас. Мы используем это так:

Если мы хотим напечатать наш объект, мы просто делаем это:

и это покажет, что:

Фидо - 3-летний черный лабрадор.

и мы можем изменить возраст нашей собаки, а затем повторно напечатать объект:

Выход :

Фидо - 3-летний черный лабрадор.
Фидо - 5-летний черный лабрадор.

Код собаки:

Теперь, когда вы увидели, как создавать и использовать объект, давайте попробуем другой пример, чтобы понять наследование.

Мы собираемся создать новый файл и создать объект с именем Животные, который будет иметь 2 свойства: возраст и диету:

Теперь давайте создадим объект с именем TamedAnimal, который унаследует свойства объекта Animal и будет иметь имя и имя владельца.

Мы используем ключевое слово super() для получения унаследованного класса. Как только мы создадим геттеры, сеттеры и методы __str__, объект TamedAnimal будет выглядеть так:

Теперь давайте использовать его:

Этот вывод кода:

Бобби 2 года, он ест мясо, и это прирученное животное Джона
Бобби сменил владельца на Майкла
Бобби сейчас 3 года
Бобби 3 года, он ест мясо, и это прирученное животное Майкла

И это в значительной степени все, что я не охватил всю сложность объекта, но просто знание этого урока должно помочь вам начать работу в мире ООП.

Если вы хотите попробовать это сами, но не знаете, что делать, попробуйте создать объект Animal (с возрастом и диетой), затем объект TamedAnimal (с именем и именем владельца), который наследует Animal, а затем Объект Dog (с расой и цветом), чем наследуется от TamedAnimal

И если вы хотите больше, попробуйте написать функцию с именем спаривание, которая вернет потомка двух собак.

Если вам понравилось читать мою статью, рассмотрите возможность подписаться на меня на Medium, чтобы увидеть больше моих работ.

ProgrammingPythonObject OrientedOop

Похожие материалы

Статья из архива сайта: перевод и редактура материала сообщества разработчиков. Версии библиотек и инструментов могли измениться, сверяйтесь с официальной документацией.