Понимание фундаментальных концепций объектно-ориентированного программирования (ООП) в 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 и найдите прекрасную работу