中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python怎么實現類的封裝

發布時間:2021-06-04 16:39:34 來源:億速云 閱讀:257 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關Python怎么實現類的封裝,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

該函數為類外的函數,如下:

class Student(object):
  def __init__(self, name, score):
    self.name = name
    self.score = score
May = Student("May",90)           # 須要提供兩個屬性
Peter = Student("Peter",85)
print(May.name, May.score)
print(Peter.name, Peter.score)
def print_score(Student):          # 外部函數print_score(Student)
  # print("%s's score is: %d" %(Student.name,Student.score))       # 普通 print 寫法
  print("{0}'s score is: {1}".format(Student.name,Student.score))    # 建議使用 Python 2.7 + .format優化寫法
print_score(May)
print_score(Peter)

既然Student實例本身就擁有這些數據,要訪問這些數據,就沒有必要從外面的函數去訪問,我們可以直接在Student類的內部定義訪問數據的函數。這樣,就把數據給“封裝”起來了。

“封裝”就是將抽象得到的數據和行為(或功能)相結合,形成一個有機的整體(即類);封裝的目的是增強安全性和簡化編程,使用者不必了解具體的實現細節,而只是要通過外部接口,一特定的訪問權限來使用類的成員。

而這些封裝數據的函數是和Student類本身是關聯起來的,我們稱之為類的方法。那如何定義類的方法呢?

就要用到對象 self 本身,參考上例,把 print_score() 函數寫為類的方法(Python2.7之后的版本,推薦.format 輸出寫法):

class Student(object):
  def __init__(self, name, score):
    self.name = name
    self.score = score
  def print_score(self):
    print("{self.name}'s score is: {self.score}".format(self=self))    # Python 2.7 + .format優化寫法
May = Student("May",90)
Peter = Student("Peter",85)

定義類的方法:除了第一個參數是self外,其他和普通函數一樣。

實例調用方法:只需要在實例變量上直接調用,除了self不用傳遞,其他參數正常傳入;注意,若類的方法僅需要self,不需要其他,調用該方法時,僅需 instance_name.function_name()

這樣一來,我們從外部看Student類,就只需要知道,創建實例需要給出name和score,而如何打印,都是在Student類的內部定義的,這些數據和邏輯被“封裝”起來了,調用很容易,但卻不用知道內部實現的細節。

封裝的另一個好處是可以給Student類增加新的方法;這邊的方法也可以要求傳參,如新增定義compare 函數,如下:

class Student(object):
  def __init__(self, name, score):
    self.name = name
    self.score = score
  def print_score(self):
    print("{self.name}'s score is: {self.score}".format(self=self))    # Python 2.7 + .format優化寫法
  def compare(self,s):
    if self.score>s:
      print("better than %d" %(s))
    elif self.score==s:
      print("equal %d" %(s))
    else:
      print("lower than %d" %(s))
May = Student("May",90)
Peter = Student("Peter",85)
May.print_score()
Peter.print_score()
May.compare(100)
May.compare(90)
May.compare(89)

上述就是小編為大家分享的Python怎么實現類的封裝了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阆中市| 迁西县| 启东市| 渝北区| 正定县| 磐石市| 安远县| 沂南县| 清水河县| 潞城市| 新竹县| 山东| 理塘县| 开化县| 新晃| 河南省| 阳原县| 贵港市| 阳信县| 甘德县| 静乐县| 保靖县| 精河县| 桃园县| 固阳县| 邯郸市| 高阳县| 明水县| 永新县| 丰都县| 新蔡县| 宜城市| 旌德县| 扎鲁特旗| 江山市| 高淳县| 嫩江县| 瓦房店市| 白城市| 西乌珠穆沁旗| 搜索|