位置:首頁 » Python3入門教學 » Python3 封裝

Python3 封裝 [編輯]

在麵向對象的Python程序,可以限製訪問方法和變量。這可以防止數據被意外修改,這也稱為封裝。讓我們先從一個例子學習。

私有方法
我們創建一個類 Car 有兩個方法:  drive() 和 updateSoftware(). 當創建一個汽車對象,它會調用私有方法 __updateSoftware().  這個函數不能直接在對象上調用,隻能在類上直接調用。

#!/usr/bin/env python
 
class Car:
 
    def __init__(self):
        self.__updateSoftware()
 
    def drive(self):
        print 'driving'
 
    def __updateSoftware(self):
        print 'updating software'
 
redcar = Car()
redcar.drive()
#redcar.__updateSoftware()  not accesible from object.

這個程序將輸出:

updating software
drivin

私有方法__updateSoftware()隻能在類內部調用。它不能從類的外部調用。

私有變量
變量可以是私有的,在很多場合是有用的。對象可以保存您的應用程序的關鍵數據,不希望出現這種情況:數據可從代碼的任何地方可以變更。 一個例子如下:

#!/usr/bin/env python
 
class Car:
 
    __maxspeed = 0
    __name = ""
 
    def __init__(self):
        self.__maxspeed = 200
        self.__name = "Supercar"
 
    def drive(self):
        print 'driving. maxspeed ' + str(self.__maxspeed)
 
redcar = Car()
redcar.drive()
redcar.__maxspeed = 10  # will not change variable because its private
redcar.drive()

如果想改變(設置)一個私有變量的值,使用 setter 方法。這是一個簡單的方法用來設置一個私有變量的值。

#!/usr/bin/env python
 
class Car:
 
    __maxspeed = 0
    __name = ""
 
    def __init__(self):
        self.__maxspeed = 200
        self.__name = "Supercar"
 
    def drive(self):
        print 'driving. maxspeed ' + str(self.__maxspeed)
 
    def setMaxSpeed(self,speed):
        self.__maxspeed = speed
 
redcar = Car()
redcar.drive()
redcar.setMaxSpeed(320)
redcar.drive()

為什麼創建它們?因為有些私有值可能在創建對象的後改變,而其他人可能不需要改變。

總結

總之,在Python有:
類型 描述
public 方法 從任何地方均可訪問
private 方法 隻能在它們自己的類。以兩個下劃線
public 變量 從任何地方可訪問
private 變量  隻有在定義自己的類或方法訪問。以兩個下劃線

其他編程語言都有保護類的方法,但是 Python 冇有。

封裝為您提供了更多的控製連接代碼,它允許一個類來改變其執行不會影響代碼的其他部分。