類
類是一種資料結構,可用於建立例項。(一般情況下,類封裝了資料和可用於該資料的方法)
python類是可呼叫的物件,即類物件
類通常在模組的頂層進行定義,以便類例項能夠在類所定義的源**檔案中的任何地方被建立。
例項初始化
instance = classname(args....)
類在例項化時可以使用__init__和__del__兩個特殊的方法。
class classname(base):
『class documentation string』 #類文件字串
class suite #類體
base:超類是乙個或多個用於繼承的父類集合
類體可以包括:宣告語句、類成員定義、資料屬性、方法
如果類不存在繼承關係,就不提供括號裡的base
class firstclass():
spam = 30 #類資料屬性
def display(self): #類方法
print self.spam
x = firstclass() #建立類例項
x.display() #方法呼叫
30dir(firstclass)
[『doc『, 『module『, 『display』, 『spam』]
class語句類似def,是可執行**;直到執行class語句後,類才會建立
class語句內,任何賦值語句都會建立類屬性
每個例項物件都會繼承類的屬性並獲得自己的命名空間
python類方法及呼叫
例項(物件)包含的屬性
可呼叫的屬性:方法
資料屬性
在oop中,例項就像是帶有「資料」的記錄,而類是處理這些記錄的「程式」
通過例項呼叫方法相當於呼叫所屬類的方法來處理當前例項。
比如之前的**例子,x.display() 會被自動轉換為 firstclass.display(x),即呼叫類的方法來處理例項x
因此,類中每個方法必須有self引數,它隱含當前例項之意
在方法內對self屬性做賦值運算會產生每個例項自己的屬性
python規定,沒有例項,方法不允許被呼叫,這是『繫結』(binding)的概念
class語句中的賦值語句會建立類屬性,如前面例子的spam
在類方法中對傳給方法的特殊引數self進行賦值會建立例項屬性
python構造器
建立例項時,python會自動呼叫類中的__init__方法,以**的為例項提供屬性
__init__方法被稱為構造器
如果類中沒有定義__init__方法,例項建立之初僅僅是乙個簡單的命名空間。
__init__的第乙個引數一定是self
self 變數用於在類例項方法中引用方法所繫結的例項。因為方法的例項在任何方法呼叫中總是作為第乙個引數傳遞的,self 被選中用來代表例項。你必須在方法宣告中放上 self,但可以在方法中不使用例項(self)。如果你的方法中沒有用到 self , 那麼請考慮建立乙個常規函式,除非你有特別的原因。畢竟,你的方法**沒有使用例項,沒有與類關聯其功能,這使得它看起來更像乙個常規函式。在其它物件導向語言中,self 可能被稱為 this。
__init__不能返回任何物件
析構函式:__del__
建構函式是必要的,而析構函式常常可以不考慮(python直譯器會自己**)
class myclass():
definit(self, name):
self.name = name
print 『my name is 』 + self.name
defdel(self):
print self.name + 』 is dead.』
i1 = myclass(『shaw』)
my name is shawdel i1
shaw id dead.
類的特殊屬性
使用dir()或__dict__,檢視類或例項的屬性
__doc__:獲取文件字串
__base__:獲取所有父類
__module__:類所在的模組
__name__:例項所屬類的名字
python類方法中可用的變數
例項變數:self.變數名
區域性變數:方法內部建立的變數,可直接使用
靜態變數:類中定義的變數。類名.變數名
全域性變數:直接使用
繼承
繼承描述了基類的屬性如何『遺傳』給派生類
子類可以繼承他的基類的任何屬性,包括資料屬性和方法
乙個未指定基類的類,其預設有乙個叫object的基類
python允許多重繼承(可以繼承多個父類)
python學習筆記7 類和例項
類是抽象的模板,而例項是根據類建立出來的乙個個具體的 物件 class 內部有屬性和方法 下面的object是繼承的類 self可以當做類裡面的例項的 形參 由於類可以起到模板的作用,因此,可以在建立例項的時候,把一些我們認為必須繫結的屬性強制填寫進去。通過定義乙個特殊的 init 方法,在建立例項...
python學習筆記 21 類和例項
物件導向最重要的概念就是類 class 和例項 instance 必須牢記類是抽象的模板,比如student類,而例項是根據類建立出來的乙個個具體的 物件 每個物件都擁有相同的方法,但各自的資料可能不同。仍以student類為例,在python中,定義類是通過class關鍵字 class stude...
python學習 類和例項
物件導向最重要的概念就是類 class 和例項 instance 必須牢記類是抽象的模板,比如student類,而例項是根據類建立出來的乙個個具體的 物件 每個物件都擁有相同的方法,但各自的資料可能不同。仍以student類為例,在python中,定義類是通過class關鍵字 class stude...