代码之家  ›  专栏  ›  技术社区  ›  u0b34a0f6ae

python的builtin构建类做什么?

  •  20
  • u0b34a0f6ae  · 技术社区  · 15 年前

    在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 回复  |  直到 7 年前
        1
  •  21
  •   Martijn Pieters    11 年前

    编译 PEP 3115 元类

    Guido van Rossum said:

    政治公众人物建议 语句接受关键字参数, *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> 是函数对象 阶级的身体。