Назад к вопросам
Junior
131
questionbank
В чем отличие атрибута класса от атрибута объекта?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Атрибуты класса принадлежат самому классу и разделяются всеми его экземплярами. Атрибуты объекта (экземпляра) принадлежат конкретному экземпляру класса и уникальны для этого экземпляра.
| Атрибут | Описание | Доступ | Изменение |
|---|---|---|---|
| Атрибут класса | Принадлежит классу, общий для всех экземпляров | ClassName.attribute или object.attribute |
Меняется для всех экземпляров при изменении через класс |
| Атрибут объекта | Принадлежит конкретному экземпляру, уникален | object.attribute |
Изменяется только для данного экземпляра |
Пример:
class Dog:
species = "Canis familiaris" # Атрибут класса
def __init__(self, name, age):
self.name = name # Атрибут объекта
self.age = age # Атрибут объекта
# Создаем два экземпляра
dog1 = Dog("Buddy", 3)
dog2 = Dog("Lucy", 5)
# Доступ к атрибутам класса и объекта
print(dog1.species) # Canis familiaris
print(dog2.species) # Canis familiaris
print(dog1.name) # Buddy
print(dog2.name) # Lucy
# Изменение атрибута класса через класс
Dog.species = "Domestic dog"
print(dog1.species) # Domestic dog
print(dog2.species) # Domestic dog
# Изменение атрибута объекта
dog1.age = 4
print(dog1.age) # 4
print(dog2.age) # 5 (не изменился)
# Присвоение атрибута с тем же именем, что и атрибут класса, экземпляру
# Создает атрибут объекта, который "скрывает" атрибут класса для этого экземпляра
dog1.species = "Wild dog"
print(dog1.species) # Wild dog (атрибут объекта)
print(dog2.species) # Domestic dog (атрибут класса)
print(Dog.species) # Domestic dog (атрибут класса)