Python入門篇 物件導向(第三部分)

2022-07-04 13:09:17 字數 1903 閱讀 3462

在class內部,可以有屬性和方法,而外部**可以通過直接呼叫例項變數的方法來運算元據,這樣,就隱藏了內部的複雜邏輯。如:

class

student(object):

def__init__

(self, name, score):

self.name =name

self.score =score

defprint_score(self):

print('

%s: %s

' % (self.name, self.score))

從前面student類的定義來看,外部**還是可以自由地修改乙個例項的namescore屬性。如果要讓內部屬性不被外部訪問,可以把屬性的名稱前加上兩個下劃線__,在python中,例項的變數名如果以__開頭,就變成了乙個私有變數(private),只有內部可以訪問,外部不能訪問。如:

class

student(object):

def__init__

(self, name, score):

self.

__name =name

self.

__score =score

defprint_score(self):

print('

%s: %s

' % (self.__name, self.__score))

這樣就無法從外部訪問例項變數.__name例項變數.__score了,這樣就確保了外部**不能隨意修改物件內部的狀態,這樣通過訪問限制的保護,**更加健壯。

但是如果外部**需要獲取內部變數怎麼辦?需要修改socre怎辦?可以給student類增加以下這樣的方法:

class

student(object):

...defget_name(self):

return self.__name

defget_score(self):

return self.__score

defset_score(self, score):

self.

__score = score

如果要判斷乙個物件的型別時,怎麼辦?

對於基本型別都可以用type()類判斷:

print(type(123))

---------->'int

'>

print(type('

string'))

---------->'str

'>

對於class的繼承關係來說,使用type()就很不方便。我們要判斷class的型別,可以使用isinstance()函式。

object -> animal -> dog -> husky

那麼,isinstance()就可以告訴我們,乙個物件是否是某種型別。

>>> a =animal()

>>> d =dog()

>>> h = husky()

結果:

>>>isinstance(h, husky)

true

>>>isinstance(h, dog)

true

>>>isinstance(h, animal)

true

>>> isinstance(d, dog) and

isinstance(d, animal)

true

>>>isinstance(d, husky)

false

python基礎物件導向 上(入門篇 九)

2.類3.類的定義 4.引數self 5.總結 自己定義乙個類 使用class關鍵字來定義 語法 class 類名 塊 class myclass pass m myclass m是通過myclass建立的物件 m是myclass的例項 m2 myclass m2也是通過myclass建立的物件 m...

JS基礎入門篇(三十六) 物件導向( 三 )

class es6 中 為 關鍵字用來宣告 乙個 類 1.只能通過new呼叫 2.不存在變數提公升 3.多個方法之間直接書寫,不需要,隔開 4.類的方法是直接定義在類的原型上的 5.定義在類中的方法不可列舉 6.object.keys 和 object.values 下面是詳細解釋 1.只能通過ne...

Python入門篇(一)

對了,入門篇都是python3.6的,其實只要有其它物件導向的經驗,看一遍就ok了,如果沒有基礎的朋友,可就得多寫幾遍嘍,理解物件的用法,未完待續 一 概念 類 用來描述具有 相同屬性和方法的物件的集合 二 命名方式 1 類名大駝峰 2 方法名小駝峰 3 嚴格區分大小寫 三 類的定義 class c...