什麼是面向對象-類的屬性

首發於 微信公衆號: 脾氣豬
轉摘需保留公衆號和來源
文字有點長,對於不想看文字的朋友,能夠去這裏看視頻,視頻可能更好理解

https://www.piqizhu.com/v/D8V9Wpkd1Wrpython

本節課咱們學習類的屬性微信

知識點:類的屬性,是能夠被它的實例共享的學習

首先, 咱們使用鴨類設計方案,來實例化幾個對象設計

# 爲了減小代碼量,使用新的鴨類設計方案
class 鴨類設計方案:
    type_name = "鴨"
    def 吃東西(self):
        print("開始用嘴巴吃東西")
    def 跑(self):
        print(self.type_name, ":用2條 後肢 跑")
    def 叫(self):
        print("嘎嘎嘎")

a = 鴨類設計方案()
b = 鴨類設計方案()
c = 鴨類設計方案()

而後,讓咱們來打印下他們3個的type_name屬性code

print(a.type_name, b.type_name, c.type_name)
# 輸出 
# 鴨 鴨 鴨

咱們看到,他們都輸出了 鴨,視頻

是的,要訪問一個對象的屬性,格式是 對象名.屬性對象

對象名 後面跟了一個 英文句號.繼承

這裏的點 . 你能夠理解爲 get

a.老婆 == a的老婆 意思是相等的同步

共享類的屬性

默認狀況下,這3個對象,從類那裏繼承了type_name這個屬性,因此,咱們打印出的是鴨

接着,咱們來修改下 type_name的值,而後打印修改後的值

鴨類設計方案.type_name = "www.piqizhu.com" # 修改成一個網址
print(a.type_name, b.type_name, c.type_name)
# 輸出
# www.piqizhu.com www.piqizhu.com www.piqizhu.com

咱們發現, a, b, c這3個對象的type_name值,也跟着變了

這說明,他們會共享 類的屬性

單獨修改對象的屬性

接着,讓咱們來修改下 對象a的type_name (注意,咱們這裏是修改對象a,而不是修改類,要搞清楚類和對象的區別)

a.type_name = "微信公衆號: 脾氣豬" # 修改對象a的屬性
print(a.type_name, b.type_name, c.type_name)
# 輸出
# 微信公衆號: 脾氣豬 www.piqizhu.com www.piqizhu.com

發現了沒,a對象的type_name已經成功被咱們修改了

這說明,咱們能夠單獨的修改某個對象的屬性

如今,咱們再來修改下 類的type_name

鴨類設計方案.type_name = "鴨子" # 修改成 鴨子
print(a.type_name, b.type_name, c.type_name)
# 輸出
# 微信公衆號: 脾氣豬 鴨子 鴨子

你們發現了嗎? 此次咱們修改類的type_name屬性,對象b和c被修改了, 而對象a,卻沒有被修改!

這說明什麼? 說明對象a的type_name屬性 已經不受控制了,能夠擺脫類的控制了

那麼對象a的type_name 是怎麼擁有這種能力的呢?

由於上面咱們給a的type_name 單獨進行了賦值,把它改爲了微信公衆號: 脾氣豬

在對a的type_name完成修改後,a的type_name便有了自我意識,能夠本身掌控本身,再也不受到類的控制了

如今讓咱們把對象b和c的type_name也喚醒吧

b.type_name = "學Python"
c.type_name = "到脾氣豬"
print(a.type_name, b.type_name, c.type_name)
# 輸出
# 微信公衆號: 脾氣豬 學Python 到脾氣豬

接着,讓咱們再來經過類,操做對象的屬性試試?

鴨類設計方案.type_name = "鴨子" # 修改成 鴨子
print(a.type_name, b.type_name, c.type_name)
# 輸出
# 微信公衆號: 脾氣豬 學Python 到脾氣豬

咦! 竟然沒法經過類,操做對象的屬性了,對象a, b, c的type_name屬性果真不受到類的控制了

因爲Python這門語言,是一個動態的,很寬鬆的語言,因此,咱們能夠隨時很方便的給類添加屬性

咱們的鴨類設計方案,已經有了一個type_name屬性,咱們給它增長一個age屬性試試

鴨類設計方案.age=99 # 動態的 增長age屬性
a.age = 100 # 讓對象a擁有自主能力
print(鴨類設計方案.age, a.age, b.age, c.age)
# 輸出
# 99 100 99 99

方便吧! 不要濫用哦!

本節課,主要講了 類的屬性 默認狀況會被 這個類實例化的全部對象共享, 除非某個對象,本身對這個屬性,進行了修改,不然,屬性的值,會一直和類保持同步

那麼, 這個特性有啥用呢? 下下節課 揭曉

相關文章
相關標籤/搜索