Python的内置__build_class__做什么?

时间:2009-12-02 13:42:24

标签: python python-3.x metaclass

在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 个答案:

答案 0 :(得分:21)

编译PEP 3115元类

Guido van Rossum said:

  

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>是一个函数对象   班主体。