Дрон Кодер — программирование для детей и взрослых в игровой форме. Начать бесплатно

Атрибуты класса и экземпляра

У объектов бывают данные двух видов: общие для всех объектов класса и личные у каждого. Разберём разницу.

Атрибут экземпляра — личный

Атрибут экземпляра задаётся через self (обычно в __init__) и свой у каждого объекта. У одного дрона имя «Пинг», у другого «Бип» — это атрибуты экземпляра, они не пересекаются.

Атрибут класса — общий

Атрибут класса задаётся прямо в теле класса и общий для всех объектов. Например, максимальная скорость, одинаковая для всех дронов, или счётчик созданных объектов.

class Drone:
    kind = 'фермер'      # атрибут класса (общий)
    def __init__(self, name):
        self.name = name    # атрибут экземпляра (личный)

Когда что использовать

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

Частые вопросы

Где хранится имя объекта? В атрибуте экземпляра, через self.

Изменится ли атрибут класса для всех? Да, если менять его у класса; поэтому изменяемые данные там держать опасно.

Начать игру бесплатно
Попробуй прямо здесь
Уровень 1

Задание