Ответ
Переменная экземпляра (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__.