Что происходит во время присваивания в контексте ООП?

«Что происходит во время присваивания в контексте ООП?» — вопрос из категории ООП, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

При присваивании (например, a = b) переменной a присваивается ссылка на объект, на который указывает b. Сам объект не копируется.

Ключевое следствие для ООП: если объект изменяемый (mutable), изменение его состояния через одну переменную будет видно через все переменные, ссылающиеся на этот же объект.

Пример на Python:

class MyClass:
    def __init__(self, value):
        self.value = value

obj1 = MyClass(10)  # Создается объект, obj1 ссылается на него
obj2 = obj1         # obj2 теперь ссылается на тот же объект
obj1.value = 20     # Изменяем атрибут объекта через obj1
print(obj2.value)   # 20 - изменение видно через obj2

Для создания независимой копии объекта необходимо использовать специальные методы (например, copy() или deepcopy() в Python).