我最近一直在研究__new__
,并且我已经阅读了许多使用__new__
代替__init__
的代码。有时我认为两者都有效,但我不知道原作者使用__new__
的原因。
有人可以解释为什么以下代码使用__new__
代替__init__
?我想要这个例子的原因。我知道__new__
和__init__
之间的区别,但我不知道为什么__new__
在这里使用。
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__?
答案 0 :(得分:0)
__new__
用于控制新实例的创建,并希望您返回它,而__init__
只允许您初始化已创建的实例
我的猜测是self.test
根据参数
答案 1 :(得分:0)
这控制了新实例的创建和返回:
因此,它决定返回一个实例或将其丢弃。