Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
10 Июл 2023
3 мин
2840

Как работать с атрибутами классов и экземпляров в Python

Изучите атрибуты классов и экземпляров в Python, чтобы стать мастером объектно-ориентированного программирования!

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

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