Атрибуты классов и экземпляров являются важной частью объектно-ориентированного программирования (ООП) в Python. В этой статье мы разберем, как использовать и работать с атрибутами классов и экземпляров.
Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.
Атрибуты классов
Атрибуты классов определяются внутри класса и являются общими для всех объектов этого класса. Они могут быть использованы для хранения констант или общих настроек.
class MyClass:
attribute = "value"
print(MyClass.attribute) # Вывод: "value"
Атрибуты экземпляров
Атрибуты экземпляра определяются для каждого объекта класса и обычно используются для хранения состояния объекта. Они определяются внутри метода __init__.
class MyClass:
def __init__(self):
self.attribute = "value"
obj = MyClass()
print(obj.attribute) # Вывод: "value"
Работа с атрибутами
Для доступа к атрибутам класса или экземпляра используйте точечную нотацию:
class MyClass:
class_attribute = "class value"
def __init__(self):
self.instance_attribute = "instance value"
obj = MyClass()
print(MyClass.class_attribute) # Вывод: "class value"
print(obj.instance_attribute) # Вывод: "instance value"
Если вам нужно изменить значение атрибута, просто присвойте ему новое значение:
class MyClass:
class_attribute = "class value"
def __init__(self):
self.instance_attribute = "instance value"
obj = MyClass()
obj.instance_attribute = "new instance value"
MyClass.class_attribute = "new class value"
print(MyClass.class_attribute) # Вывод: "new class value"
print(obj.instance_attribute) # Вывод: "new instance value"
🚨 Однако изменять атрибуты класса через экземпляр класса может привести к неочевидным результатам:
class MyClass:
class_attribute = "class value"
def __init__(self):
self.instance_attribute = "instance value"
obj1 = MyClass()
obj2 = MyClass()
obj1.class_attribute = "new class value"
print(MyClass.class_attribute) # Вывод: "class value"
print(obj1.class_attribute) # Вывод: "new class value"
print(obj2.class_attribute) # Вывод: "class value"
Здесь изменение class_attribute через экземпляр obj1 создало новый атрибут экземпляра с тем же именем, вместо изменения атрибута класса.
Изучайте Python на онлайн-курсе от Skypro «Python-разработчик». Программа рассчитана на новичков без опыта программирования и технического образования. Курс проходит в формате записанных коротких видеолекций. Будет много проверочных заданий и мастер-классов. В конце каждой недели — живая встреча с экспертами в разработке для ответов на вопросы и разбора домашек.
Вывод
В этой статье мы рассмотрели основы работы с атрибутами классов и экземпляров в Python. Эти принципы помогут вам понять и использовать ООП в Python для создания структурированных и модульных программ. Удачи в изучении Python! 🐍
Перейти в телеграм, чтобы получить результаты теста





Забрать
Добавить комментарий