Python 的内置 __build_class__ 是做什么的?

发布于 2024-08-13 08:34:24 字数 325 浏览 2 评论 0原文

在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) 函数有什么区别?

In Python 3.1, there is a new builtin function I don't know in the builtins module:

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

    Internal helper function used by the class statement.

What does this function do? Why must it be in builtins if it's internal? What is the difference to the type(name, bases, dict) function?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不气馁 2024-08-20 08:34:24

编译PEP 3115元类

Guido van Rossum 说:

PEP 建议该班级
语句接受关键字参数,
*args**kwds 语法以及位置基数。这有点乱
编译并执行,但我们已经
当然,在代码中包含这个
调用常规函数。

所以我认为这是可以接受的
这进入对新的(隐藏)的调用
内置函数,命名为
__build_class__。那么这个类的定义:

 类 C(A、B、元类=M、其他=42、*more_bases、*more_kwds):
    ...

翻译成这样:

 C = __build_class__(, 'C', A, B, 元类=M, other=42,
*更多_基地,*更多_kwds)

其中 是函数对象
类主体。

Compiling the PEP 3115 metaclass

Guido van Rossum said:

The PEP proposes that the class
statement accepts keyword arguments,
*args, and **kwds syntax as well as positional bases. This is a bit messy
to compile and execute, but we already
have this, of course, in the code for
calling regular functions.

So I think it would be acceptable to
this into a call to a new (hidden)
built-in function, named
__build_class__. Then that this class definition:

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

would translate into this:

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

where <func> is a function object for
the class body.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文