Python学习笔记:面向对象编程(4)
前言
最近在學(xué)習(xí)深度學(xué)習(xí),已經(jīng)跑出了幾個(gè)模型,但Pyhton的基礎(chǔ)不夠扎實(shí),因此,開始補(bǔ)習(xí)Python了,大家都推薦廖雪峰的課程,因此,開始了學(xué)習(xí),但光學(xué)有沒(méi)有用,還要和大家討論一下,因此,寫下這些帖子,廖雪峰的課程連接在這里:廖雪峰
Python的相關(guān)介紹,以及它的歷史故事和運(yùn)行機(jī)制,可以參見(jiàn)這篇:python介紹
Python的安裝可以參見(jiàn)這篇:Python安裝
Python的運(yùn)行模式以及輸入輸出可以參見(jiàn)這篇:Python IO
Python的基礎(chǔ)概念介紹,可以參見(jiàn)這篇:Python 基礎(chǔ)
Python字符串和編碼的介紹,可以參見(jiàn)這篇:Python字符串與編碼
Python基本數(shù)據(jù)結(jié)構(gòu):list和tuple介紹,可以參見(jiàn)這篇:Python list和tuple
Python控制語(yǔ)句介紹:ifelse,可以參見(jiàn)這篇:Python 條件判斷
Python控制語(yǔ)句介紹:循環(huán)實(shí)現(xiàn),可以參見(jiàn)這篇:Python循環(huán)語(yǔ)句
Python數(shù)據(jù)結(jié)構(gòu):dict和set介紹Python數(shù)據(jù)結(jié)構(gòu)dict和set
Python函數(shù)相關(guān):Python函數(shù)
Python高階特性:Python高級(jí)特性
Python高階函數(shù):Python高階函數(shù)
Python匿名函數(shù):Python匿名函數(shù)
Python裝飾器:Python裝飾器
Python偏函數(shù):Python偏函數(shù)
Python模塊:Python模塊
Python面向?qū)ο缶幊?#xff08;1):Python面向?qū)ο?
Python面向?qū)ο缶幊?#xff08;2):Python面向?qū)ο?#xff08;2)
Python面向?qū)ο缶幊?#xff08;3):Python面向?qū)ο?#xff08;3)
目錄:
- 前言
- 實(shí)例屬性和類屬性
- 小結(jié)
實(shí)例屬性和類屬性
由于Python是動(dòng)態(tài)語(yǔ)言,根據(jù)類創(chuàng)建的實(shí)例可以任意綁定屬性。
給實(shí)例綁定屬性的方法是通過(guò)實(shí)例變量,或者通過(guò)self變量:
但是,如果Student類本身需要綁定一個(gè)屬性呢?可以直接在class中定義屬性,這種屬性是類屬性,歸Student類所有:
class Student(object):name = 'Student'當(dāng)我們定義了一個(gè)類屬性后,這個(gè)屬性雖然歸類所有,但類的所有實(shí)例都可以訪問(wèn)到。來(lái)測(cè)試一下:
>>> class Student(object): ... name = 'Student' ... >>> s = Student() > # 創(chuàng)建實(shí)例s >>> print(s.name) > # 打印name屬性,因?yàn)閷?shí)例并沒(méi)有name屬性,所以會(huì)繼續(xù)查找class的name屬性 Student >>> print(Student.name) # 打印類的name屬性 Student >>> s.name = 'Michael' # 給實(shí)例綁定name屬性 >>> print(s.name) # 由于實(shí)例屬性優(yōu)先級(jí)比類屬性高,因此,它會(huì)屏蔽掉類的name屬性 Michael >>> print(Student.name) # 但是類屬性并未消失,用Student.name仍然可以訪問(wèn) Student >>> del s.name # 如果刪除實(shí)例的name屬性 >>> print(s.name) # 再次調(diào)用s.name,由于實(shí)例的name屬性沒(méi)有找到,類的name屬性就顯示出來(lái)了 Student類屬性相當(dāng)于函數(shù)當(dāng)中的默認(rèn)參數(shù),如果,你不傳遞的話,就用默認(rèn)的,傳遞的話,就覆蓋現(xiàn)在的。
從上面的例子可以看出,在編寫程序的時(shí)候,千萬(wàn)不要對(duì)實(shí)例屬性和類屬性使用相同的名字,因?yàn)橄嗤Q的實(shí)例屬性將屏蔽掉類屬性,但是當(dāng)你刪除實(shí)例屬性后,再使用相同的名稱,訪問(wèn)到的將是類屬性。
小結(jié)
小結(jié)
實(shí)例屬性屬于各個(gè)實(shí)例所有,互不干擾;
類屬性屬于類所有,所有實(shí)例共享一個(gè)屬性;
不要對(duì)實(shí)例屬性和類屬性使用相同的名字,否則將產(chǎn)生難以發(fā)現(xiàn)的錯(cuò)誤
總結(jié)
以上是生活随笔為你收集整理的Python学习笔记:面向对象编程(4)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python学习笔记:面向对象编程(3)
- 下一篇: 退出所有循环_Python学习之路9—循