Когда мы вызываем метод, как объект python узнает, из какого класса извлечь метод?
Рассмотрим следующий код:
bb = BeachBallKlass(99) # Line A
color = bb.get_color('longitude', 33.5, 'lattitude', 22.8) # Line B
Как Python определяет, где взять get_color
метод из?
Перед get_color
метод вызывается в строке B, он извлекается из некоторого класса. Получение get_color
от bb
можно сделать, позвонив __getattribute__
Тем не менее, каждый класс, в том числе BeachBallKlass
может иметь свое __getattribute__
метод. Когда вы звоните bb.__getattribute__
Python знает, как использовать __getattribute__
метод от BeachBallKlass. Python не использует __getattribute__
чтобы узнать, какой класс bb
создается из, потому что вызов __getattribute__
потребует уже зная класс. Python должен иметь какой-то другой механизм, чтобы знать, какой класс bb
создается экземпляр, который не получает эту информацию из bb
позвонив __getattribute__
, Что это за механизм?