gpt4 book ai didi

python - 创建元组的子类时调用 __new__

转载 作者:太空狗 更新时间:2023-10-30 00:35:25 25 4
gpt4 key购买 nike

<分区>

在 Python 中,当对元组进行子类化时,__new__ 函数以 self 作为参数被调用。例如,这里是 PySpark 的 Row 类的释义版本:

class Row(tuple):
def __new__(self, args):
return tuple.__new__(self, args)

但是 help(tuple) 没有向 __new__ 显示 self 参数:

  __new__(*args, **kwargs) from builtins.type
Create and return a new object. See help(type) for accurate signature.

help(type)只是说同样的事情:

__new__(*args, **kwargs)
Create and return a new object. See help(type) for accurate signature.

那么 self 是如何传递给 Row 类定义中的 __new__ 的呢?

  • 是通过 *args 吗?
  • __new__ 是否有一些微妙的地方,它的签名可以随上下文改变?
  • 或者,文档是否有误?

是否可以查看 tuple.__new__ 的源代码以便我自己找到答案?

我的问题不是 this one 的重复问题因为在那个问题中,所有讨论都涉及 __new__ 方法,这些方法明确地将 selfcls 作为第一个参数。我在努力理解

  1. 为什么 tuple.__new__ 方法没有 selfcls 作为第一个参数。
  2. 我将如何着手检查元组类的源代码,亲自了解到底发生了什么。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com