Что такое атрибут объекта в Python?

Ответ

Атрибут в Python — это переменная или функция (метод), связанная с конкретным объектом и доступная через оператор . (точку). Атрибуты определяют состояние и поведение объекта.

Существует два основных типа атрибутов:

  1. Атрибуты экземпляра (Instance Attributes): Принадлежат конкретному экземпляру класса. Они уникальны для каждого объекта и обычно определяются в методе __init__.
  2. Атрибуты класса (Class Attributes): Принадлежат самому классу и являются общими для всех его экземпляров.

Пример:

class Dog:
    # Атрибут класса: общий для всех собак
    species = "Canis familiaris"

    def __init__(self, name, age):
        # Атрибуты экземпляра: уникальны для каждой собаки
        self.name = name
        self.age = age

# Создаем два экземпляра (объекта)
dog1 = Dog("Rex", 5)
dog2 = Dog("Buddy", 3)

# Доступ к атрибутам экземпляра
print(f"{dog1.name} is {dog1.age} years old.") # -> Rex is 5 years old.

# Доступ к атрибуту класса через экземпляр или сам класс
print(f"{dog1.name} is a {dog1.species}.") # -> Rex is a Canis familiaris.
print(f"All dogs belong to the species {Dog.species}.") # -> All dogs belong to the species Canis familiaris.

Механизм доступа:

При обращении к атрибуту, например obj.x, Python сначала ищет x в словаре атрибутов самого экземпляра (obj.__dict__). Если не находит, он продолжает поиск в атрибутах класса (obj.__class__.__dict__) и далее по иерархии родительских классов.