Основы Python: Объектно-ориентированное программирование (ООП)

Lesson 1 of 7 • 10 XP

Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

Введение в объектно-ориентированное программирование в Python

Объектно-ориентированное программирование (ООП) — это парадигма программирования, которая позволяет представлять реальные концепции в виде объектов — вещей, обладающих конкретными характеристиками (данными) и поведением (действиями).

Представьте объект как самостоятельный элемент в вашей программе, который объединяет данные и действия в одном месте — как ваш смартфон: у него есть данные (марка, модель, уровень заряда батареи) и он может выполнять действия (снимать фото, звонить, воспроизводить музыку). В коде эти данные хранятся в атрибутах (например, battery_level), а действия реализованы методами (например, take_photo()); вместе они составляют единое целое, которое можно создавать, настраивать и использовать.

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

Когда вы создаёте объект, Python обычно запускает метод init для установки начального состояния; затем вы управляете объектом, вызывая его методы, которые могут читать или изменять его атрибуты по необходимости. Если вы создавали игру, представьте персонажа Player с параметрами здоровья и позиции, который может вызывать методы move() и jump(); в веб‑приложении — пользователя User с именем и паролем, который может выполнять authenticate() и update_profile().

Это и есть объект: данные + поведение, живущие вместе, созданные из класса и готовые к работе для вас.

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

В этом уроке мы изучим базовые концепции ООП в Python и научимся создавать собственные объекты.


Классы и объекты

ООП в Python основано на классах и объектах:

  • Класс — шаблон или определение типа объекта. Он описывает, какие свойства (называемые атрибутами) и какое поведение (называемое методами) будет иметь этот тип объекта.
  • Объектэкземпляр класса, реальная версия шаблона с конкретными данными в атрибутах.

1.1. Создание класса

Чтобы создать класс в Python, используйте ключевое слово class, за которым следует имя класса и двоеточие.

Пример:

class Person:
    pass

Здесь мы создали класс Person. Оператор pass — заглушка, которая говорит Python «ничего не делать здесь» до тех пор, пока не добавим реальный код.

ПОДСКАЗКА: По соглашению имена классов пишутся в PascalCase (каждое слово с заглавной буквы).

Атрибуты и методы

Класс может содержать:

  • Атрибуты — переменные, хранящие информацию об объекте.
  • Методы — функции, определяющие действия, которые объект может выполнять.

2.1. Добавление атрибутов

Чтобы задать атрибуты при создании объекта, определяем их внутри специального метода __init__ (произносится «дандер инит» — сокращение от double underscore init).

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

Пример:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

Что здесь происходит:

  • Первый параметр self — ссылка на конкретный создаваемый объект.
  • Другие параметры (name, age) — значения, передаваемые при создании объекта.
  • self.name и self.ageатрибуты экземпляра, хранящие данные внутри объекта.

ВАЖНО: self всегда должен быть первым параметром методов экземпляра — это позволяет обращаться к атрибутам и методам самого объекта.

2.2. Добавление методов

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

Пример:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")

Здесь:

  • Мы добавили метод greet.
  • Он использует собственные атрибуты объекта (self.name и self.age), чтобы вывести персональное сообщение.

Создание и использование объектов

Когда класс определён, можно создавать объекты, вызывая класс как функцию — с его именем.

Пример:

person1 = Person("Alice", 30)
person1.greet()

Вывод:

Hello, my name is Alice and I am 30 years old.

Итоги

В этом уроке вы узнали:

  • В чём разница между классами и объектами.
  • Как использовать __init__ для заданий атрибутов при создании объектов.
  • Как определить методы, позволяющие объектам выполнять действия.

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