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

溫馨提示×

溫馨提示×

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

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

python中實現封裝的目的是什么

發布時間:2020-08-07 13:48:33 來源:億速云 閱讀:397 作者:小新 欄目:編程語言

python中實現封裝的目的是什么?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!

封裝的目的是,保護隱私,把不想讓別人知道的東西封裝起來。下面通過例子來理解封裝

定義了Student類及實例化,每個實例都擁有各自的name和score。現在若需要打印一個學生的成績,可定義函數 print_score(),該函數為類外的函數。

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

贡觉县| 九龙县| 莱芜市| 个旧市| 延吉市| 新泰市| 凌海市| 贡嘎县| 开原市| 个旧市| 忻州市| 剑阁县| 汨罗市| 化隆| 新源县| 云阳县| 罗源县| 铜梁县| 英超| 朝阳县| 嘉祥县| 青阳县| 万年县| 河源市| 九寨沟县| 丰顺县| 金堂县| 罗江县| 利津县| 阿鲁科尔沁旗| 五河县| 霍山县| 松江区| 河津市| 雷波县| 新密市| 乐东| 信丰县| 垣曲县| 无棣县| 屏山县|