Python中定義例項方法

2021-09-25 16:46:39 字數 1869 閱讀 3851

乙個例項的私有屬性就是以__開頭的屬性,無法被外部訪問,那這些屬性定義有什麼用?

雖然私有屬性無法從外部訪問,但是,從類的內部是可以訪問的。除了可以定義例項的屬性外,還可以定義例項的方法。

例項的方法就是在類中定義的函式,它的第乙個引數永遠是 self,指向呼叫該方法的例項本身,其他引數和乙個普通函式是完全一樣的:

class person(object):

def __init__(self, name):

self.__name = name

def get_name(self):

return self.__name

get_name(self) 就是乙個例項方法,它的第乙個引數是self。而__init__(self, name)其實也可看做是乙個特殊的例項方法。

呼叫例項方法必須在例項上呼叫:

p1 = person('bob')

print(p1.get_name())

結果為:bob

在例項方法內部,可以訪問所有例項屬性,這樣,如果外部需要訪問私有屬性,可以通過方法呼叫獲得,這種資料封裝的形式除了能保護內部資料一致性外,還可以簡化外部呼叫的難度。

任務:給 person 類增加乙個私有屬性 __score,表示分數,再增加乙個例項方法 get_grade(),能根據 __score 的值分別返回 a-優秀, b-及格, c-不及格三檔。

方法一:

class person(object):

def __init__(self, name, score):

self.name = name

self.score = score

def get_grade(self):

if self.score >= 80:

return 'a'

if self.score >= 60 and self.score < 80:

return 'b'

if self.score < 60:

return 'c'

p1 = person('bob', 90)

p2 = person('alice', 65)

p3 = person('tim', 48)

print(p1.get_grade())

print(p2.get_grade())

print(p3.get_grade())

結果為:

abc

方法二:

class person(object):

def __init__(self, name, score):

self.__name = name

self.__score = score

def get_grade(self):

if self.__score >= 80:

return 'a'

if self.__score >= 60:

return 'b'

return 'c'

p1 = person('bob', 90)

p2 = person('alice', 65)

p3 = person('tim', 48)

print(p1.get_grade())

print(p2.get_grade())

print(p3.get_grade())

結果為:

a

bc

python 定義例項方法

定義例項方法 乙個例項的私有屬性就是以 開頭的屬性,無法被外部訪問,那這些屬性定義有什麼用?雖然私有屬性無法從外部訪問,但是,從類的內部是可以訪問的。除了可以定義例項的屬性外,還可以定義例項的方法。例項的方法就是在類中定義的函式,它的第乙個引數永遠是 self,指向呼叫該方法的例項本身,其他引數和乙...

python 定義例項方法

乙個例項的私有屬性就是以 開頭的屬性,無法被外部訪問,那這些屬性定義有什麼用?雖然私有屬性無法從外部訪問,但是,從類的內部是可以訪問的。除了可以定義例項的屬性外,還可以定義例項的方法。例項的方法就是在類中定義的函式,它的第乙個引數永遠是 self,指向呼叫該方法的例項本身,其他引數和乙個普通函式是完...

Python中Range,len方法例項

今天刷leetcode的時候突然腦子抽了,關於陣列的len和range怎麼用就腦子混了。用部落格記錄下,幫助以後自己回憶。len 方法返回物件 字元,列表,元組 長度或者專案個數 語法 len s 返回物件長度 例項 函式語法 range stop range start,stop step sta...