Python的類什麼時候用
物件導向最重要的概念就是類(Class)和例項(Instance),必須牢記類是抽象的模板,比如Student類,而例項是根據類建立出來的一個個具體的“物件”,每個物件都擁有相同的方法,但各自的資料可能不同。
仍以Student類為例,在Python中,定義類是透過class關鍵字:
class Student(object): pass
class後面緊接著是類名,即Student,類名通常是大寫開頭的單詞,緊接著是(object),表示該類是從哪個類繼承下來的,繼承的概念我們後面再講,通常,如果沒有合適的繼承類,就使用object類,這是所有類最終都會繼承的類。
定義好了Student類,就可以根據Student類建立出Student的例項,建立例項是透過類名+()實現的:
>>> bart = Student() >>> bart <__main__.Student object at 0x10a67a590> >>> Student <class '__main__.Student'>
可以看到,變數bart指向的就是一個Student的object,後面的0x10a67a590是記憶體地址,每個object的地址都不一樣,而Student本身則是一個類。
可以自由地給一個例項變數繫結屬性,比如,給例項bart繫結一個name屬性:
>>> bart.name = 'Bart Simpson' >>> bart.name 'Bart Simpson'
由於類可以起到模板的作用,因此,可以在建立例項的時候,把一些我們認為必須繫結的屬性強制填寫進去。透過定義一個特殊的__init__方法,在建立例項的時候,就把name,score等屬性綁上去:
class Student(object): def __init__(self, name, score): self.name = name self.score = score
注意到__init__方法的第一個引數永遠是self,表示建立的例項本身,因此,在__init__方法內部,就可以把各種屬性繫結到self,因為self就指向建立的例項本身。
有了__init__方法,在建立例項的時候,就不能傳入空的引數了,必須傳入與__init__方法匹配的引數,但self不需要傳,Python直譯器自己會把例項變數傳進去:
>>> bart = Student('Bart Simpson', 59) >>> bart.name 'Bart Simpson' >>> bart.score 59
和普通的函式相比,在類中定義的函式只有一點不同,就是第一個引數永遠是例項變數self,並且,呼叫時,不用傳遞該引數。除此之外,類的方法和普通函式沒有什麼區別,所以,你仍然可以用預設引數、可變引數和關鍵字引數。
總結
類是建立例項的模板,而例項則是一個一個具體的物件,各個例項擁有的資料都互相獨立,互不影響; 方法就是與例項繫結的函式,和普通函式不同,方法可以直接訪問例項的資料; 透過在例項上呼叫方法,我們就直接操作了物件內部的資料,但無需知道方法內部的實現細節。 和靜態語言不同,Python允許對例項變數繫結任何資料,也就是說,對於兩個例項變數,雖然它們都是同一個類的不同例項,但擁有 的變數名稱都可能不同:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2480/viewspace-2835678/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python中什麼時候使用自定義類Python
- C++中什麼時候用move,什麼時候用forward?C++Forward
- python什麼時候縮排Python
- 什麼時候採用socket通訊,什麼時候採用http通訊HTTP
- 什麼時候需要自動化什麼時候用自動化?
- 什麼時候該用vuex?Vue
- 用Python預測你的花唄可以用到什麼時候Python
- 什麼時候用linux系統多Linux
- python為什麼用類Python
- session是什麼時候建立的Session
- 什麼時候釋出
- 什麼時候能解脫
- Python會在什麼時候被其他語言取代Python
- TRIZ課堂—什麼時候可以用分割原理?
- beego 什麼時候支援grpcGoRPC
- 新版什麼時候釋出?
- 到底什麼時候使用mqMQ
- win11什麼時候釋出的 win11什麼時候推送詳細介紹
- 什麼時候才是微服務拆分的最佳時機?微服務
- Mybatis什麼時候需要宣告jdbcType?MyBatisJDBC
- Python是什麼意思?Python幹什麼用的?Python
- shiro 什麼時候會進入 doGetAuthorizationInfo() ?
- 什麼時候選擇mmap而非read?
- 美國公司年審時間是在什麼時候的?
- MySQL什麼時候會使用內部臨時表?MySql
- 英語日期序數詞的寫法?什麼時候加st?什麼時候加th?1~31號分別是怎麼加的?
- python新式類是什麼Python
- 你打算敲程式碼到什麼時候?
- 什麼時候會傳送options請求
- 企業什麼時候需要ERP系統?
- 機器什麼時候能夠學習?
- Flink中什麼時候需要些returns()方法
- mysql什麼時候會發生file sortMySql
- 你覺得你每天最佳的工作時間是什麼時候?
- 在Linux中,我們都知道,dns採用了tcp協議,又採用了udp協議,什麼時候採用tcp協議?什麼 時候採用udp協議?為什麼要這麼設計?LinuxDNSTCP協議UDP
- Python是什麼意思?Python有什麼用?Python
- Python中的類和物件是什麼Python物件
- 你是什麼時候”突然”學會程式設計的程式設計