Когда мы пишем на Python код наподобие
a + b, конкретное поведение операции + определяют типы a и b. Каждый тип в Python имеет собственную реализацию оператора + (если этот тип поддерживает +), и интерпретатор Python сам выбирает подходящую реализацию для вызова на основании типа операндов. Весь этот процесс называется динамической диспетчеризацией. И перед тем, как произойдёт само действие
a + b, под капотом происходит очень много всего, что и описывается в статье. А вот схема выполнения операции
a + b в Python:⏩Код на Python компилируется в байт-код, исполняемый стековой виртуальной машиной (VM) в CPython. Команда
BINARY_OP отвечает за исполнение операции + с двумя операндами, a и b⏩Сама VM не знает, как выполнять
+ с двумя объектами. Она делегирует эту задачу абстрактному интерфейсу объектов⏩Абстрактный интерфейс объектов в CPython определяет интерфейс, поддерживающий стандартные операции уровня объектов в CPython. Это позволяет VM единым унифицированным образом исполнять все операторы, не зная подробностей реализации системы объектов. Абстрактный интерфейс диспетчеризирует исполнение конкретной реализации внутри типов при помощи таблицы поиска указателей функций в заголовке объекта
📎 Статья
📎 Ещё одна статья в тему
@pythonl
