Объясните разницу между методами __getattribute__ и __getattr__. Что произойдёт, если в __getattribute__ случайно вызвать self.attribute без использования super()?

В Python доступ к свойствам объекта можно получить напрямую через точечную нотацию, без использования метода get. Например:

Короткий ответ

Что ответить на собеседовании

В Python доступ к свойствам объекта можно получить напрямую через точечную нотацию, без использования метода get. Например:

Подробный разбор

Ответ с пояснениями

В Python доступ к свойствам объекта можно получить напрямую через точечную нотацию, без использования метода get. Например:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

p = Person('Иван', 30)
print(p.name)  # прямой доступ к свойству

Также можно использовать функцию getattr(), которая позволяет получить значение свойства по имени в виде строки:

print(getattr(p, 'age'))  # 30

Таким образом, основные способы доступа к свойствам объекта без метода get:

  • Прямой доступ через object.property
  • Использование getattr(object, 'property_name')

Если нужно контролировать доступ или вычислять значение, можно использовать декоратор @property, но это уже не прямой доступ к атрибуту, а вызов метода, оформленного как свойство.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее