Курс программирования на Python с использованием Linux, часть 4.

Программа на Python, иллюстрирующая концепцию наследования классов.

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

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

Давайте попробуем прояснить это с помощью аналогии.

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

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

Курс программирования на Python с использованием Linux

В предыдущих статьях мы видели, что модель объектно-ориентированного программирования основана на 4 столпах: объектах, классах, методах и атрибутах. Классы — это шаблоны, используемые для моделирования объектов или сущностей, с которыми мы работаем. Эти шаблоны определяют атрибуты, которыми будут обладать объекты, а методы определяют поведение объекта.

Различные элементы, созданные с использованием шаблона, заданного в классах, называются экземплярами. Например, в классе Operating Systems у нас есть экземпляры: Linux, Windows, macOS. Однако нам может потребоваться создать классы, лишь незначительно отличающиеся от существующих. Переписывать код не обязательно, поскольку мы можем воспользоваться особенностью объектно-ориентированного программирования, известной как наследование.

Рассмотрим следующую программу с добавленным классом.

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

Использование отступов упрощает иерархическую структуру кода.
Различать блоки кода, такие как циклы, функции или классы. Кроме того, если вы неправильно отформатируете свои программы на Python, они не будут работать.

Теперь давайте проанализируем программу построчно.

class Sistemas:

Как мы видели, эта программа создает шаблон, на основе которого будут создаваться экземпляры операционной системы.

def __init__(self, nombre, version, derivada):

Здесь мы создаём класс. Первая часть представляет собой автоматизированный метод, который используется каждый раз при его создании. Элементы в скобках — это параметры, которые будет иметь объект. `Self` всегда используется и относится к объекту. Он всегда стоит первым. Остальные параметры — это те, которые мы установили на предыдущих занятиях: название дистрибутива Linux, версия и дистрибутив, от которого он происходит.

self.nombre = nombre
self.version = version
self.derivada = derivada

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

def mostrar_info(self):

Этот метод определяет способ отображения информации об атрибутах объекта. Параметр `self` указывает, что следует использовать только параметры, сохраненные в качестве атрибутов.

print(f"Nombre: {self.nombre}")
print(f"Versión: {self.version}")
print(f"Derivada: {self.derivada}")

Эти 3 строки указывают на то, что информация об атрибутах отображается на экране.

class SistemaConPeso(Sistemas):

В этом отношении наша программа отличается от предыдущей. Мы добавили новый расширенный класс, построенный на основе предыдущего. Именно поэтому имя предыдущего класса добавлено к имени класса в скобках.

def __init__(self, nombre, version, derivada, peso):

Это конструктор дочернего класса, почти такой же, как тот, который мы видели раньше, но с добавлением параметра веса.

super().__init__(nombre, version, derivada)

Чтобы избежать повторения кода, мы указываем программе с помощью инструкции `super`, что задача обработки имени, версии и производного класса лежит на родительском классе.

self.peso = peso

Нам еще предстояло позаботиться о сохранении атрибута веса.

def mostrar_info(self):

Поскольку цель состоит в том, чтобы избежать написания лишнего кода, вместо создания новой функции для отображения дополнительных данных мы изменим уже существующую.
super().mostrar_info()

Вызовите метод родительского класса, чтобы задать способ отображения хранящихся в нем атрибутов.
print(f"Peso: {self.peso}

Добавьте информацию о том, как следует отображать данные для текущего класса.

sistema = SistemaConPeso("Linux Mint", "22", "Ubuntu", "3GB")

Создайте объект, в котором будет храниться информация, добавив новый параметр, и сохраните его в системной переменной.

sistema.mostrar_info()

Вызовите метод, отвечающий за отображение информации.

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

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

Программа на Python, написанная с помощью VS Code.
Теме статьи:
Курс программирования на Python с использованием Linux, часть 3.