python資料封裝 理解Python中的資料封裝

2021-10-13 04:14:12 字數 1039 閱讀 7190

我正在閱讀我們如何確保資料封裝在python。乙個部落格上說

資料封裝意味著,我們只能通過getter和setter訪問私有屬性

請考慮blog中的以下片段:class robot:

def __init__(self, name=none, build_year=none):

self.name = name

self.build_year = build_year

現在,如果我建立類的物件,如下所示:

^$目前,我可以直接訪問屬性,因為我已經將它們定義為public(不使用__符號)

現在為了確保資料封裝,我需要將屬性定義為private

使用__符號並通過getter和setter訪問私有屬性。在

所以新的類定義如下:class robot:

def __init__(self, name=none, build_year=2000):

self.__name = name

self.__build_year = build_year

def set_name(self, name):

self.__name = name

def get_name(self):

return self.__name

def set_build_year(self, by):

self.__build_year = by

def get_build_year(self):

return self.__build_year

現在我將類例項化如下:x = robot("marvin", 1979)

x.set_build_year(1993)

這樣,我就實現了資料封裝,因為私有資料成員不再被直接訪問,它們只能通過類方法訪問。在

問題1:我們為什麼要這樣做?我們要保護**不讓誰知道?誰是外面的世界?任何擁有源**的人都可以根據自己的需求對其進行調整,那麼我們為什麼還要新增額外的方法(get/set)來修改/調整屬性呢?在

問題2:上面的例子是否被認為是data encapsulation?在

mac終端輸入python預設開啟python3

1.終端開啟 bash profile檔案 open bash profile 2.新增以下內容到.bash profile檔案 setting path for python 3.5 path library frameworks python.framework versions 3.5 bin...

python封裝繼承 python繼承 封裝

python繼承 封裝 1 為什麼要封裝 封裝資料的主要原因是 保護隱私 封裝方法的主要原因是 隔離複雜度 2 封裝分為兩個層面 第乙個層面的封裝 什麼都不用做 建立類和物件會分別建立二者的命名空間,我們只能用類名.或者obj.的方式去訪問裡面的名字,這本身就是一種封裝 r1.nickname 草叢...

python物件封裝 Python物件封裝安全性

您不應該真正依賴private,public等來保證安全性 如 防止惡意 和外部威脅 它們的本意是防止程式設計師朝自己的腳開槍,而不是作為 計算機 安全措施。你也可以輕鬆訪問c 物件的私有成員字段,只要你繞過靜態編譯器檢查,直接進入記憶體,但是你會說c 缺少真正的封裝嗎?在 最好的辦法是在單獨的程序...