(學習筆記)python 對__init__的初步理解

weixin_34402408發表於2018-12-18

        寫了半個多月的Android和JavaWeb的的作業,終於在昨天把JavaWeb寫完,把Android放棄了。還是Python大法好。



        話說回來python也學了一段時間,可是很慚愧,因為很少用到類,所以對其類的用法一直是懵懵懂懂。又因為過段時間會有python爬蟲的實訓課程,所以想先稍微瞭解一下HTMLParser,一看程式碼就碰到了__init__、__new__.


關於__init__,在廖雪峰老師的官網上這是這樣講的

14999001-06ca56e10aa16687.png

        那麼可以知道,__init__是在建立例項時,預設進行呼叫並對例項的屬性進行初始化(不過,__new__方法會在__init__之前呼叫),以使我們寫程式碼的時候更加靈活和方便。

        所以說在比較簡單的程式中,如果沒有什麼特別的需要初始化的屬性的話,問題應該是不大的。這裡可以看一下https://blog.csdn.net/geerniya/article/details/77487941

        如果C++學的好的話,應該會立馬感覺到這有點像建構函式吧(我看了很多貼子,看到有人提到建構函式,才想到我C++學過建構函式這個東西,尷尬。。。),也是用來初始化物件。


百度  建構函式  的話可以在裡面看到下面這一段:

14999001-ef1f225878ac3e83.png


維基百科搜尋 建構函式:

14999001-01a177e2ed70fbb9.png


這裡我稍微改一下的話,就可以看出__new__和__init__的呼叫順序了:

14999001-f0edc1ec408785e1.png


        __init__看起來好像也沒那麼複雜,其功能就是例項繫結屬性,但讓不讓__init__繫結屬性或者讓__init__為誰繫結屬性,都是__new__說了算


        至於__new__又有什麼意義,我暫時還是講不出東西

        不過,感興趣的同學可以移步到這裡https://www.cnblogs.com/ifantastic/p/3175735.html,有專門進解__new__方法。


        另外,如果我哪裡說的有問題,希望同學們能加以指正(抱拳)

相關文章