30

在 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)

4

1 回答 1

29

编译PEP 3115元类

Guido van Rossum 说:

PEP 建议 class 语句接受关键字参数 , *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>是类主体的函数对象。

于 2009-12-02T13:44:54.933 回答