Menu
Coddy logo textTech

Параметр self

Часть раздела Object Oriented Programming путешествия по 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 и создаст экземпляры для тестирования вашей реализации. Убедитесь, что ваш метод работает правильно при вызове из файла драйвера.

Шпаргалка

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

self всегда должен быть первым параметром в определениях методов:

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

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

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

Вызывайте методы (Python автоматически передает объект в качестве self):

my_car.honk()        # Beep beep!
my_car.describe()    # I am a Red Sedan

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

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

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Проверьте себя

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

Все уроки раздела Object Oriented Programming