Ответ
Атрибут в Python — это переменная или функция (метод), связанная с конкретным объектом и доступная через оператор .
(точку). Атрибуты определяют состояние и поведение объекта.
Существует два основных типа атрибутов:
- Атрибуты экземпляра (Instance Attributes): Принадлежат конкретному экземпляру класса. Они уникальны для каждого объекта и обычно определяются в методе
__init__
. - Атрибуты класса (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__
) и далее по иерархии родительских классов.