Как в Python создать переменную экземпляра

«Как в Python создать переменную экземпляра» — вопрос из категории ООП, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Переменная экземпляра (instance variable) в Python — это атрибут, который принадлежит конкретному объекту (экземпляру) класса. Ее значение уникально для каждого объекта и не влияет на другие экземпляры того же класса.

Основной способ создания — в конструкторе __init__:

Самый распространенный и правильный способ — инициализировать переменные экземпляра внутри метода __init__, используя self.

class User:
    def __init__(self, user_id, username):
        # Создание переменных экземпляра
        self.id = user_id
        self.name = username
        self.is_active = True

# Создаем два разных экземпляра
user1 = User(101, "alice")
user2 = User(102, "bob")

# Значения переменных уникальны для каждого объекта
print(f"User 1: ID={user1.id}, Name={user1.name}") # User 1: ID=101, Name=alice
print(f"User 2: ID={user2.id}, Name={user2.name}") # User 2: ID=102, Name=bob

# Изменение атрибута одного объекта не затрагивает другой
user2.is_active = False
print(f"user1.is_active: {user1.is_active}") # True
print(f"user2.is_active: {user2.is_active}") # False

Ключевые характеристики:

  • Привязка к объекту: Переменные хранятся в словаре __dict__ каждого экземпляра.
  • Уникальность: Значения независимы между объектами.
  • Создание: Хотя переменные можно добавлять к экземпляру "на лету" (user1.new_attr = 'value'), это считается плохой практикой, так как делает структуру объекта непредсказуемой. Вся инициализация должна происходить в __init__.