Menu
CoddyTech

Параметр self

Часть раздела Объектно-ориентированное программирование путешествия по Python на Coddy. Урок 4 из 64.

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

Вот пример класса с методами, использующими self:

class Car:
    def honk(self):
        print("Beep beep!")
    
    def describe(self):
        print(f"I am a {self.color} {self.model}")

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

Создай объект автомобиля и добавь атрибуты:

my_car = Car()
my_car.color = "Red"
my_car.model = "Sedan"

Теперь вызови методы:

my_car.honk()
my_car.describe()

Вывод:

Beep beep!
I am a Red Sedan

Обратите внимание: при вызове my_car.describe() не нужно передавать ничего для self — Python автоматически передаёт my_car в качестве параметра self.

Вот что происходит за кулисами:

# Когда вы пишете так:
my_car.describe()

# Python на самом деле делает вот что:
Car.describe(my_car)

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

Ключевой момент: всегда указывай self первым параметром в определениях методов, но никогда не передавай его при вызове методов — Python делает это автоматически.

challenge icon

Задание

Легко

Заверши класс Car в файле car.py, добавив метод с именем display_info, который использует параметр self, чтобы вывести год выпуска, марку и модель автомобиля в формате:

"This car is a [year] [make] [model]".

  • car.py: содержит определение класса Car, в которое ты добавишь метод display_info
  • driver.py: главный файл выполнения, который импортирует и использует класс Car

Файл driver.py импортирует твой класс Car и создаст экземпляры для проверки твоей реализации. Убедись, что метод правильно работает при вызове из файла драйвера.

Попробуйте сами

from car import Car

# Проверьте свой код
my_car = Car()
my_car.year = 2020
my_car.make = "Toyota"
my_car.model = "Corolla"

my_car.display_info()  # Должно вывести: This car is a 2020 Toyota Corolla
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Объектно-ориентированное программирование

Потренируйтесь самостоятельно: Онлайн-компилятор Python