python學習筆記7 類和例項

2021-09-22 19:49:50 字數 2464 閱讀 6893

類是抽象的模板,而例項是根據類建立出來的乙個個具體的「物件」

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)

bart.name

『bart simpson』

bart.score

59

方法:物件導向程式設計的乙個重要特點就是資料封裝,可以直接在class內部定義列印函式 def print_score(std): print(』%s: %s』 % (std.name, std.score)) ,需要列印時直接print_score(bart)即可直接列印出來

諸如此類可以用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...