Подтвердить что ты не робот

Что делает Python встроенный __build_class__?

В Python 3.1 появилась новая встроенная функция, которую я не знаю в модуле builtins:

__build_class__(...)
    __build_class__(func, name, *bases, metaclass=None, **kwds) -> class

    Internal helper function used by the class statement.

Что делает эта функция? Почему он должен быть встроенным, если он внутренний? В чем разница с функцией type(name, bases, dict)?

4b9b3361

Ответ 1

Компиляция PEP 3115 метакласс

Гвидо ван Россум сказал:

PEP предлагает, чтобы класс оператор принимает аргументы ключевых слов, *args и **kwds, а также позиционные базы. Это немного грязно компилировать и выполнять, но мы уже это, конечно, в коде для вызывая регулярные функции.

Поэтому я думаю, что было бы приемлемо это в призыв к новому (скрытому) встроенная функция, названная __build_class__. Тогда это определение класса:

  class C(A, B, metaclass=M, other=42, *more_bases, *more_kwds):
    ...

переводится следующим образом:

  C = __build_class__(<func>, 'C', A, B, metaclass=M, other=42,
*more_bases, *more_kwds)

где <func> - объект функции для тело класса.