Что делает встроенный в Python __build_class__? - PullRequest
20 голосов
/ 02 декабря 2009

В 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)?

1 Ответ

21 голосов
/ 02 декабря 2009

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

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

ПКП предлагает, чтобы класс оператор принимает ключевые аргументы, Синтаксис *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> является функциональным объектом для тело класса.

...