Параметр 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 делает это автоматически.
Задание
ЛегкоЗаверши класс Car в файле car.py, добавив метод с именем display_info, который использует параметр self, чтобы вывести год выпуска, марку и модель автомобиля в формате:
"This car is a [year] [make] [model]".
car.py: содержит определение классаCar, в которое ты добавишь методdisplay_infodriver.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В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Объектно-ориентированное программирование
1Основы ООП
Введение в ООПВнешние файлыКлассы и объектыПараметр selfМетодыАтрибутыМетод-конструктор (__init__)Повторение — простой калькулятор4Наследование
Основы наследованияФункция super()Переопределение методовМножественное наследованиеПорядок разрешения методовПовторение: иерархия сотрудников7Специальные методы
Введение в магические методыПерегрузка операторовМагические методы контейнеровПовторение — пользовательский список10Паттерны проектирования. Часть 1
Введение в паттерны проектированияПаттерн «Одиночка»Паттерн «Фабрика»Паттерн «Наблюдатель»Паттерн «Стратегия»2Декораторы
Введение в декораторыДекоратор свойстваДекоратор статического методаДекоратор метода класса5Полиморфизм
Переопределение методов: повторениеУтиная типизацияАбстрактные классы и методыПроектирование интерфейсовПовторение — калькулятор фигур8Продвинутые концепции ООП
Композиция и наследованиеМиксиныСтатические методы и методы классаДекораторы классовМенеджеры контекста11Паттерны проектирования. Часть 2
Паттерн «Команда»Паттерн «Адаптер»Паттерн «Декоратор»Паттерн «Шаблонный метод»Паттерн «Состояние»Паттерн «Компоновщик»3Свойства классов
Переменные экземпляра и классаДекораторы свойствПриватные атрибутыПовторение — менеджер банковского счёта6Инкапсуляция
Публичные, защищённые и приватные членыМодификаторы доступаСокрытие информацииПродвинутые декораторы свойствПовторение — система учёта студентов12Проект: Система управления библиотекой
Обзор проектаКлассы книг и пользователейСистема выдачи книгФункция поискаИнтерфейс администратораТестирование и интеграцияПотренируйтесь самостоятельно: Онлайн-компилятор Python