最近我一直在研究__new__
,我讀過很多代碼,其中__new__
代替__init__
。有時我認爲兩者都有效,但我不知道爲什麼原作者使用__new__
。爲什麼我應該在這個例子中使用__new__而不是__init__?
有人可以解釋爲什麼下面的代碼使用__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__?
[Python使用\ _ \ _ new \ _ \ _和\ _ \ _ init \ _ \ _?]的可能重複(https://stackoverflow.com/questions/674304/pythons-use-of -new-and-init) –
'__init__'和'__new__'不是一樣的。 '__new__'是實際創建類的實例的方法。它返回一個新的類實例。一旦'__new__'創建實例,它就會通過通常名爲'self'的第一個參數傳遞給'__init__'。 '__init__'是允許您通過初始化屬性來定製實例的方法。 –
Yuck。不要在這裏上課;使用工廠函數 – ppperry