gpt4 book ai didi

python - 在这个例子中为什么我应该使用 __new__ 而不是 __init__ ?

转载 作者:太空宇宙 更新时间:2023-11-03 14:57:07 25 4
gpt4 key购买 nike

我最近一直在研究__new__,并且阅读了很多使用__new__而不是__init__的代码。有时候我觉得两者都可以,但是不知道原作者为什么用__new__

有人可以解释为什么下面的代码使用 __new__ 而不是 __init__ 吗?我想要这个例子的理由。我知道__new____init__之间的区别,但我不知道为什么这里使用__new__

Example :

    class MiniSubtest(object):
def __new__(cls, *args, **kargs):
self = super(MiniSubtest, cls).__new__(cls)
ret = None
if args is None:
args = []
try:
ret = self.test(*args, **kargs)
finally:
if hasattr(self, "clean"):
self.clean()
return ret

我想如果我使用__init__,它仍然有效,为什么它使用__new__?

最佳答案

这控制新实例的创建和返回:

  • 首先创建实例。
  • try 子句在测试新实例期间捕获异常。
  • 如果出现异常,它会清理实例的垃圾。
  • 然后它返回 None 而不是实例。

因此它决定返回一个实例或丢弃它。

关于python - 在这个例子中为什么我应该使用 __new__ 而不是 __init__ ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45450029/

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