我最近一直在研究__new__
,我读了很多代码,其中使用__new__
代替{__new__
。在
有人能解释一下为什么下面的代码使用__new__
而不是{__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
我想如果我用初始化,它仍然有效,为什么它用了新?在
这将控制新实例的创建和返回:
所以它决定返回一个实例或丢弃它。在
__new__
用于控制新实例的创建并要求您返回它,而{我的猜测是
self.test
根据参数返回不同类型的实例相关问题 更多 >
编程相关推荐