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

Классы: чертежи для создания объектов

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

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

Объекты: экземпляры классов

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

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

Атрибуты и методы: определение характеристик и поведения объекта

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

С другой стороны, методы определяют операции или действия, которые может выполнять объект. Они представляют поведение или функциональные возможности, связанные с объектом. Методы аналогичны функциям или процедурам, но они определены в рамках класса и работают с данными (атрибутами) этого класса. Продолжая пример класса «Car», некоторые методы могут быть «start_engine()» для запуска двигателя автомобиля, «accelerate()» для увеличения скорости автомобиля и «brake()» для включения тормозов и замедления автомобиля. .

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

Пример кода класса

Следующий код представляет собой пример класса CookieCutter, который имеет два атрибута: shape и size.

class CookieCutter:
    def __init__(self, shape, size):
        self.shape = shape
        self.size = size

    def cut_cookie(self):
        print(f"Cutting a {self.size}-sized {self.shape} cookie!")

# Instantiate objects from the CookieCutter class
gingerbread_man_cutter = CookieCutter("gingerbread man", "large")
heart_cutter = CookieCutter("heart", "medium")
star_cutter = CookieCutter("star", "small")

# Access and modify object attributes
gingerbread_man_cutter.size = "extra-large"
heart_cutter.shape = "oval"

# Call the cut_cookie() method on each object
gingerbread_man_cutter.cut_cookie()
heart_cutter.cut_cookie()
star_cutter.cut_cookie()

Метод __init__ инициализирует эти атрибуты при создании объекта.

Мы создаем три экземпляра класса CookieCutter, каждый с разными значениями атрибутов shape и size.

После создания объектов мы покажем, как напрямую обращаться к атрибутам объекта и изменять их. Мы меняем атрибут size для gingerbread_man_cutter на «сверхбольшой», а атрибут shape для heart_cutter на «овальный».

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

Параметр «self» в классах Python

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

Параметр self неявно передается при вызове метода и позволяет методу получать доступ и управлять атрибутами и методами конкретного экземпляра класса.

В представленном ранее примере кода параметр self используется в методе __init__ и методе cut_cookieкласса CookieCutter.

  • В методе __init__methodself относится к конкретному экземпляру создаваемого класса CookieCutter. Используя self.shape и self.size, мы можем присвоить значения, предоставленные во время создания экземпляра, форме и размеру атрибутов экземпляра.
  • В методе cut_cookie selfпредставляет конкретный экземпляр класса CookieCutter, для которого вызывается метод. Используя self.shape и self.size, мы можем получить доступ к значениям атрибутов этого конкретного экземпляра и включить их в напечатанное сообщение.

По соглашению в качестве имени параметра используется self, но технически вы можете использовать любое другое допустимое имя. Однако настоятельно рекомендуется придерживаться соглашения об использовании self, чтобы обеспечить удобочитаемость кода и обеспечить согласованность с другими разработчиками Python.

Переменные объекта: назначение объектов переменным

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

Давайте возьмем пример с использованием класса Counter. Представьте, что мы определили класс Counter, представляющий простой механизм подсчета. Чтобы создать экземпляр этого класса, мы можем использовать оператор:

c = Counter()

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

При таком назначении c становится объектной переменной, которая ссылается на экземпляр класса Counter. Затем мы можем использовать эту переменную для доступа и управления атрибутами и методами, определенными в классе Counter.

Например, если класс Counter имеет метод с именем increment(), мы можем вызвать этот метод для объектной переменной c, используя запись через точку:

c.increment()

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

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

Повышение уровня кодирования

Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:

  • 👏 Хлопайте за историю и подписывайтесь на автора 👉
  • 📰 Смотрите больше контента в публикации Level Up Coding
  • 💰 Бесплатный курс собеседования по программированию ⇒ Просмотреть курс
  • 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"

🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу