python中__init__和__new__方法的使用
1、__new__方法默認返回實例對象供__init__方法、實例方法使用。
2、__init__方法為初始化方法,為類的實例提供一些屬性或完成一些動作。
3、__new__方法創建實例對象供__init__方法使用,__init__方法定制實例對象。
__new__方法必須返回值,__init__方法不需要返回值。(如果返回非None值就報錯)
4、對象的創建和初始化過程示意圖
5、執行流程:
a、創建Person類的對象student=Person(‘kb’,19),先執行等號右邊的內容Person(‘kb’,19)
b、調用Person類中的__new__方法,并將Person類傳給方法中的cls
c、創建obj對象
d、執行__init__方法,并將obj對象賦值給self
e、將self再傳給student1對象
6、我們比較兩個方法的參數,可以發現__new__方法是傳入類(cls),而__init__方法傳入類的實例化對象(self),而有意思的是,__new__方法返回的值就是一個實例化對象(ps:如果__new__方法返回None,則__init__方法不會被執行,并且返回值只能調用父類中的__new__方法,而不能調用毫無關系的類的__new__方法)。
我們可以這么理解它們之間的關系,__new__是開辟疆域的大將軍,而__init__是在這片疆域上辛勤勞作的小老百姓,只有__new__執行完后,開辟好疆域后,__init__才能工作,結合到代碼,也就是__new__的返回值正是__init__中self。
總結
以上是生活随笔為你收集整理的python中__init__和__new__方法的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python——类和对象之__dict_
- 下一篇: python—类和对象之浅拷贝和深拷贝详