類是抽象的模板,而例項是根據類建立出來的乙個個具體的「物件」
class 內部有屬性和方法
**下面的object是繼承的類
self可以當做類裡面的例項的 形參 **
由於類可以起到模板的作用,因此,可以在建立例項的時候,把一些我們認為必須繫結的屬性強制填寫進去。通過定義乙個特殊的__init__方法,在建立例項的時候,就把name,score等屬性綁上去:
class student(object):
definit(self, name, score):
self.name = name
self.score = score #在這裡定義了類屬性
上面對類屬性的定義的一段話可以永遠不變
注意到__init__方法的第乙個引數永遠是self,表示建立的例項本身,因此,在__init__方法內部,就可以把各種屬性繫結到self,因為self就指向建立的例項本身。
有了__init__方法,在建立例項的時候,就不能傳入空的引數了,必須傳入與__init__方法匹配的引數,但self不需要傳,python直譯器自己會把例項變數傳進去
bart = student(『bart simpson』, 59)方法:物件導向程式設計的乙個重要特點就是資料封裝,可以直接在class內部定義列印函式 def print_score(std): print(』%s: %s』 % (std.name, std.score)) ,需要列印時直接print_score(bart)即可直接列印出來bart.name
『bart simpson』
bart.score
59
諸如此類可以用def 增添很多新方法
notice:本質上函式名和變數都是物件,所以在有class之後,class內部的變數和函式返回值,均可以用 例項.變數 來引用,或者 例項.函式名()來引用函式返回值
和靜態語言不同,python允許對例項變數繫結任何資料,也就是說,對於兩個例項變數,雖然它們都是同乙個類的不同例項,但擁有的變數名稱都可能不同
即:可以通過
bart = student(『bart simpson』, 59)訪問限制lisa = student(『lisa simpson』, 87)
bart.age = 8
bart.age
8lisa.age
traceback (most recent call last):
file 「」, line 1, in
attributeerror: 『student』 object has no attribute 『age』
給某乙個例項新增新的屬性,但是其他同 類 例項沒有這個屬性
如果要讓內部屬性不被外部訪問,可以把屬性的名稱前加上兩個下劃線__,在python中,例項的變數名如果以__開頭,就變成了乙個私有變數(private),只有內部可以訪問,外部不能訪問,所以,我們把student類改一改:
class student(object):
def __init__(self, name, score):
self.__name = name
self.__score = score
def print_score(self):
print('%s: %s' % (self.__name, self.__score))
改完後,對於外部**來說,沒什麼變動,但是已經無法從外部訪問例項變數.__name和例項變數.__score了
這樣就確保了外部**不能隨意修改物件內部的狀態,這樣通過訪問限制的保護,**更加健壯。
可通過給student類加入get_name和get_score這樣的方法從外部獲取name和score:
class student(object):
def get_name(self):
return self.__name
def get_score(self):
return self.__score
同理通過增加方法也可以在外部對其進行修改
你也許會問,原先那種直接通過bart.score = 99也可以修改啊,為什麼要定義乙個方法大費周折?因為在方法中,可以對引數做檢查,避免傳入無效的引數:
class student(object):
def set_score(self, score):
if 0 <= score <= 100:
self.__score = score
else:
raise valueerror('bad score')
python學習筆記 類和例項
類 類是一種資料結構,可用於建立例項。一般情況下,類封裝了資料和可用於該資料的方法 python類是可呼叫的物件,即類物件 類通常在模組的頂層進行定義,以便類例項能夠在類所定義的源 檔案中的任何地方被建立。例項初始化 instance classname args.類在例項化時可以使用 init 和...
python學習筆記 21 類和例項
物件導向最重要的概念就是類 class 和例項 instance 必須牢記類是抽象的模板,比如student類,而例項是根據類建立出來的乙個個具體的 物件 每個物件都擁有相同的方法,但各自的資料可能不同。仍以student類為例,在python中,定義類是通過class關鍵字 class stude...
python學習 類和例項
物件導向最重要的概念就是類 class 和例項 instance 必須牢記類是抽象的模板,比如student類,而例項是根據類建立出來的乙個個具體的 物件 每個物件都擁有相同的方法,但各自的資料可能不同。仍以student類為例,在python中,定義類是通過class關鍵字 class stude...