class A(object):
def __init__(self):
print("這是 init 方法")
def __new__(cls):
print("這是 new 方法")
return object.__new__(cls)
A()
總結(jié)
- new至少要有一個參數(shù)cls,代表要實例化的類,此參數(shù)在實例化時由Python解釋器自動提供
- new必須要有返回值,返回實例化出來的實例,這點在自己實現(xiàn)new時要特別注意,可以return父類new出來的實例,或者直接是object的new出來的實例
- init有一個參數(shù)self,就是這個new返回的實例,init在new的基礎(chǔ)上可以完成一些其它初始化的動作,init不需要返回值
- 我們可以將類比作制造商,new方法就是前期的原材料購買環(huán)節(jié),init方法就是在有原材料的基礎(chǔ)上,加工,初始化商品環(huán)節(jié)