👩💻 Что выведет этот код и почему?
❗️ Ответ: C (30). Объяснение:
🌟 В классе Rectangle у нас есть атрибуты width и __height. Здесь __height является "приватным" атрибутом из-за двойного подчеркивания перед именем.
🌟 Когда создается объект rect = Rectangle(5, 3), он инициализируется значениями width = 5 и __height = 3.
🌟 Затем rect.width изменяется на 10, и это изменение успешно применяется, так как width не является приватным атрибутом.
🌟 Следующая строка rect.__height = 5 не изменяет оригинальное значение __height, потому что Python использует name mangling для приватных атрибутов. Это означает, что к оригинальному атрибуту __height обращаются как к _Rectangle__height. Таким образом, rect.__height = 5 создает новый атрибут __height, который не влияет на оригинальный атрибут _Rectangle__height.
🌟 Когда вызывается rect.area(), метод использует self.width (которое теперь равно 10) и self.__height (оригинальное значение _Rectangle__height, которое осталось равным 3).
🌟 Следовательно, результат rect.area() будет 10 * 3 = 30
@pythonl
Post #864
15.9K

- 🔥 37
- 👍 27
- ❤ 8