gpt4 book ai didi

python - 更改 __new__ 中的 arg 不会转移到 __init__

转载 作者:太空宇宙 更新时间:2023-11-04 01:11:26 24 4
gpt4 key购买 nike

我无法理解这里发生的事情,因为我认为这是可行的。

class Test(object):

def __new__(cls, arg):
return object.__new__(cls, 345)

def __init__(self, arg):
self.arg = arg

test = Test('testing')
print
print '****', test.arg

这个小例子概述了我所遇到的困惑。在我创建的新函数中,我在创建类时传递了一个整数 345 而不是我的字符串“testing”。但是,当我之后检查arg时,它仍然是我的“测试”字符串。

同时,Python 文档中的这个示例确实有效:

class inch(float):
"Convert from inch to meter"
def __new__(cls, arg=0.0):
return float.__new__(cls, arg*0.0254)
print inch(12)

谁能解释一下这里的区别是什么?有什么方法可以让我获得我正在寻找的功能吗?

最佳答案

object.__new__ 接受但忽略第一类参数以外的任何参数。这允许您在子类中向 __new__ 添加其他参数,而不会中断对 super().__new__ 的调用。

float.__new__ 是一个单独的函数,它使用它的第二个参数来提供一个值。

关于python - 更改 __new__ 中的 arg 不会转移到 __init__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27434855/

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