Python Class self __init__筆記

bestallen發表於2016-07-19

學到這個知識已經是第4,第5遍了,但還是跟盲人摸象一樣。

還是做點記錄,和測試

圖1:這裡的name和age,是指對例項初始化的時候,例項會帶有的屬性,a和b是等待客戶傳入的引數

圖2:按照這樣的設定,來進行的測試結果


如果,我們在__init__裡面設定了2個引數,但是建立例項化物件時候只給了一個,那麼,系統就會報錯的,如下面

圖3:僅設定了name的實參,沒給age的實參


當然,如果在__init__裡面給了預設引數了,也可以僅輸入一個,也是可以的



那name和age只是建立例項物件時候初始化時候該有的,如果後面像用到其他屬性呢?

答案是在方法中可以自行定義,如下圖

我這裡只是舉了個例子,身高是年齡的3倍關係,就位物件建立了一個tall屬性,後面可以隨時呼叫

然後,需要記住的是,self一定要寫,不然就等於是方法內的臨時變數了,不是物件的屬性了!!!

我們看下報錯的那張圖



然後我們來看一下,在初始化__init__的時候,如果沒有帶self的話,會有什麼樣的情況,如下:

下面例子,第7行裡面,這個name沒有self的字首,所以實際上,這裡的name只是一個__init__內部的臨時區域性變數,在後面根本不會用到,等於浪費了

我們看到my name is class global name這裡,正式因為初始化__init__裡面沒有self.name屬性,所以,他呼叫的是樓上的class變數

下面一行當你直接呼叫變數name的時候,因為class變數是針對類物件和例項物件的,所以,呼叫的name只能再往上一層,呼叫全域性變數

組後一行的Person.name裡的Person是類物件,所以呼叫的是class變數







相關文章