07 Июл 2023
2 мин
6367

Разбираемся с __init__ и self в Python

Одни из основных концепций, которые новички встречают при изучении Python и особенно объектно-ориентированного программирования (ООП), это __init__ и self.

Содержание

Одни из основных концепций, которые новички встречают при изучении Python и особенно объектно-ориентированного программирования (ООП), это __init__ и self. Это ключевые элементы классов в Python, понимание которых является важным шагом в освоении языка.

Пример проблемы

Допустим, есть класс, который описывает сущность «Автомобиль».

class Car:
    def __init__(self, color, brand):
        self.color = color
        self.brand = brand

Здесь видим две незнакомые конструкции: __init__ и self. Что они делают?

Разбор init

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

В примере выше, __init__ принимает три аргумента: self, color и brand. color и brand — это значения, которые передаются при создании нового объекта класса Car, и они устанавливаются в качестве атрибутов объекта.

my_car = Car('blue', 'Toyota')

В этом случае ‘blue’ и ‘Toyota’ передаются в __init__ и устанавливаются в качестве атрибутов color и brand для my_car.

Разбор self

self — это ссылка на текущий экземпляр класса. Это способ обращения к атрибутам и методам класса изнутри самого класса.

В примере выше, self.color = color устанавливает атрибут color текущего объекта класса Car в значение color, переданное в __init__.

Следует отметить, что self не передается при создании нового объекта класса. Python автоматически передает ссылку на текущий объект в self.

my_car = Car('blue', 'Toyota')  # self не передается

В заключение, __init__ и self являются важными концепциями в Python, особенно в контексте ООП. __init__ используется для инициализации новых объектов класса, а self — для ссылки на текущий объект класса.

Содержание

Добавить комментарий

Узнай профессию по рисунку