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

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

Ответ

В Python атрибуты экземпляра (instance attributes) принадлежат конкретному объекту и доступны на протяжении всего его жизненного цикла. Их область видимости ограничена самим экземпляром.

Это означает, что доступ к ним можно получить как из методов самого класса (через self), так и извне, через ссылку на объект.

Пример:

class User:
    def __init__(self, name, email):
        # Атрибуты экземпляра, создаются при инициализации
        self.name = name
        self.email = email

    def get_info(self):
        # 1. Доступ к атрибутам внутри метода через self
        return f"User: {self.name}, Email: {self.email}"

# Создаем экземпляр класса
user_obj = User("Alice", "alice@example.com")

# 2. Доступ к атрибутам извне через имя экземпляра
print(user_obj.name)  # Вывод: Alice
print(user_obj.get_info()) # Вывод: User: Alice, Email: alice@example.com

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

  • Привязка к экземпляру: Каждый объект класса имеет свой собственный, независимый набор атрибутов. Изменение атрибута у одного объекта не влияет на другие.
  • Доступ внутри класса: Методы класса получают доступ к этим атрибутам через первый аргумент, традиционно называемый self.
  • Публичный доступ: По умолчанию все атрибуты экземпляра в Python являются публичными и доступны из любого места, где есть ссылка на объект.