1. 程式人生 > >Python進階(十一)-定義例項方法

Python進階(十一)-定義例項方法

分享一下我的偶像大神的人工智慧教程!http://blog.csdn.net/jiangjunshow

也歡迎轉載我的文章,轉載請註明出處 https://blog.csdn.net/mm2zzyzzp

Python進階(十一)-定義例項方法

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

class Person(object):
    def __init__(self, name):
        self.__name = name

    def get_name(self):
        return self.__name
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

  get_name(self) 就是一個例項方法,它的第一個引數是self。init(self, name)其實也可看做是一個特殊的例項方法。
呼叫例項方法必須在例項上呼叫:

p1 = Person('Bob')
print p1.get_name()  # self不需要顯式傳入
# => Bob
  • 1
  • 2
  • 3

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

舉例

  請給 Person 類增加一個私有屬性 __score,表示分數,再增加一個例項方法 get_grade(),能根據 __score 的值分別返回 A-優秀, B-及格, C-不及格三檔。
注意get_grade()是例項方法,第一個引數為self。

參考程式碼:

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

執行結果
這裡寫圖片描述


這裡寫圖片描述

分享一下我的偶像大神的人工智慧教程!http://blog.csdn.net/jiangjunshow

也歡迎轉載我的文章,轉載請註明出處 https://blog.csdn.net/mm2zzyzzp