今天學習的核心內容是使用初始化方法__init__ 定義屬性以及瞭解del方法和str方法。
昨天學習的時候,我就很困惑,明明說不要在類的外部給對象增加屬性啊,怎麼還是在外部給可愛的小喵咪起名字呢。
今天一上來就給出了答案。
這種“來追啊,追上我就和你一起快樂玩耍”的感覺,像極了愛情。
11集,在類的外部給對象增加屬性的隱患
之前代碼存在的問題--在類的外部給對象增加屬性。
即 tom.name = “tom” 這行代碼。
若給此行調換位置,則程序會報錯。
提示:在日常開發中,不推薦在 類的外部 給對象增加屬性。
如果在運行時,沒有找到屬性,程序會報錯。
對象應該包含有哪些屬性,應該封裝在類的內部。
12集,創建對象時自動調用初始化方法
當使用 類名()創建對象時,會自動執行以下操作:
1、為對象在內存中 分配空間--創建對象;
2、為對象的屬性 設置初始值--初始化方法(init)
__init__ 方法是 專門 用來定義一個類 具有哪些屬性的方法!
13集,在初始化方法中定義屬性
在__init__ 方法內部使用self. 屬性名=屬性的初始值 就可以定義屬性。
定義屬性之後,再使用 Cat 類創建對象,都會擁有該屬性。
在初始化方法中定義屬性,在編寫中是有智能提示的,這也是初始化方法中定義的一個優點。
14集,改造初始化方法--初始化的同時設置初始值
如果希望在 創建對象的同時,就設置對象的屬性,可以對 __init__ 方法進行改造:
1、把希望設置的屬性值,定義成__init__ 方法的參數(形參)。
2、在方法內部使用 self.屬性 = 形參 接收外部傳遞的參數。
3、在創建對象時,使用 類名(屬性1,屬性2...)把對象特有的屬性以參數的形式,傳遞到初始化方法的內部,使創建的對象更加靈活多樣。
15集,內置方法:del方法和對象的生命週期
當使用 類名() 創建對象時,為對象 分配完空間後,自動 調用 __init__ 方法。
當一個 對象被從內存中銷燬 前,會 自動 調用__del__ 方法。
一個來、一個走,二者對應存在。
如果希望在對象被銷燬前再做一些事情,就可以考慮使用__del__ 方法。
(好殘忍,一種資本家壓榨的感覺!!!)
del 關鍵字可以刪除一個對象。
生命週期:
一個對象從調用 類名()創建,生命週期開始;
一個對象的__del__ 方法一旦被調用,生命週期結束;
在對象的生命週期內,可以訪問對象屬性,或者讓對象調用方法。
16集,內置方法:str方法定製變量輸出信息
在Python 中,使用 print 輸出對象變量,默認情況下,會輸出這個變量 引用的對象 是 由哪一個類創建的對象,以及 在內存中的地址(十六進制表示)。
如果在開發中,希望使用 print 輸出 對象變量 時,能夠打印 自定義的內容,就可以利用 __str__ 這個內置方法。
注意: __str__方法 必須返回一個字符串。
作者簡介:馮十一,40歲仍然堅持學習的哏兒都老男人。多平臺簽約作者,日更寫作踐行者,每週閱讀一本書。歡迎關注@天津馮十一
閱讀更多 天津馮十一 的文章