對象和對象的屬性都得自己造,怪不得男人累呢(第34天)

今天學習的核心內容是使用初始化方法__init__ 定義屬性以及瞭解del方法和str方法。

昨天學習的時候,我就很困惑,明明說不要在類的外部給對象增加屬性啊,怎麼還是在外部給可愛的小喵咪起名字呢。

今天一上來就給出了答案。

這種“來追啊,追上我就和你一起快樂玩耍”的感覺,像極了愛情。

對象和對象的屬性都得自己造,怪不得男人累呢(第34天)

11集,在類的外部給對象增加屬性的隱患

之前代碼存在的問題--在類的外部給對象增加屬性。

即 tom.name = “tom” 這行代碼。

若給此行調換位置,則程序會報錯。

對象和對象的屬性都得自己造,怪不得男人累呢(第34天)

提示:在日常開發中,不推薦在 類的外部 給對象增加屬性。

如果在運行時,沒有找到屬性,程序會報錯。

對象應該包含有哪些屬性,應該封裝在類的內部。

12集,創建對象時自動調用初始化方法

當使用 類名()創建對象時,會自動執行以下操作:

1、為對象在內存中 分配空間--創建對象;

2、為對象的屬性 設置初始值--初始化方法(init)

__init__ 方法是 專門 用來定義一個類 具有哪些屬性的方法!

對象和對象的屬性都得自己造,怪不得男人累呢(第34天)

13集,在初始化方法中定義屬性

在__init__ 方法內部使用self. 屬性名=屬性的初始值 就可以定義屬性。

定義屬性之後,再使用 Cat 類創建對象,都會擁有該屬性。

對象和對象的屬性都得自己造,怪不得男人累呢(第34天)

在初始化方法中定義屬性,在編寫中是有智能提示的,這也是初始化方法中定義的一個優點。

14集,改造初始化方法--初始化的同時設置初始值

如果希望在 創建對象的同時,就設置對象的屬性,可以對 __init__ 方法進行改造:

1、把希望設置的屬性值,定義成__init__ 方法的參數(形參)。

2、在方法內部使用 self.屬性 = 形參 接收外部傳遞的參數。

3、在創建對象時,使用 類名(屬性1,屬性2...)把對象特有的屬性以參數的形式,傳遞到初始化方法的內部,使創建的對象更加靈活多樣。

對象和對象的屬性都得自己造,怪不得男人累呢(第34天)

15集,內置方法:del方法和對象的生命週期

當使用 類名() 創建對象時,為對象 分配完空間後,自動 調用 __init__ 方法。

當一個 對象被從內存中銷燬 前,會 自動 調用__del__ 方法。

一個來、一個走,二者對應存在。

如果希望在對象被銷燬前再做一些事情,就可以考慮使用__del__ 方法。

(好殘忍,一種資本家壓榨的感覺!!!)

對象和對象的屬性都得自己造,怪不得男人累呢(第34天)

del 關鍵字可以刪除一個對象。

生命週期:

一個對象從調用 類名()創建,生命週期開始;

一個對象的__del__ 方法一旦被調用,生命週期結束;

在對象的生命週期內,可以訪問對象屬性,或者讓對象調用方法。

16集,內置方法:str方法定製變量輸出信息

在Python 中,使用 print 輸出對象變量,默認情況下,會輸出這個變量 引用的對象 是 由哪一個類創建的對象,以及 在內存中的地址(十六進制表示)。

如果在開發中,希望使用 print 輸出 對象變量 時,能夠打印 自定義的內容,就可以利用 __str__ 這個內置方法。

注意: __str__方法 必須返回一個字符串。

對象和對象的屬性都得自己造,怪不得男人累呢(第34天)


作者簡介:馮十一,40歲仍然堅持學習的哏兒都老男人。多平臺簽約作者,日更寫作踐行者,每週閱讀一本書。歡迎關注@天津馮十一


分享到:


相關文章: