Атрибуты классов и экземпляров являются важной частью объектно-ориентированного программирования (ООП) в 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! 🐍
Добавить комментарий