*面向?qū)ο蟮奶卣鳌庋b的意義和操作過程

封裝是對全局作用域中其它區(qū)域隱藏多余信息的原則。

封裝聽起來有些像多態(tài),因為他們都是 抽象的原則---他們都會幫助處理程序組件而不用過多關(guān)心多余細(xì)節(jié)狞玛,就像函數(shù)做的一樣。但是封裝并不等同于多態(tài)涧窒。多態(tài)的可以讓用戶對于不知道是什么類(或?qū)ο箢愋停┑膶ο筮M(jìn)行方法調(diào)用心肪,而封裝是可以不用關(guān)心對象是如何構(gòu)建的而直接進(jìn)行使用。

創(chuàng)建一個有對象(通過像調(diào)用函數(shù)一樣調(diào)用類)后纠吴,將變量c綁定到該對象上硬鞍。可以使用set和 get 方法如:

>>>class Person:

>>> ? ? ?def __init__(self,name): ? -->初始化函數(shù)戴已,對對象的屬性初始化

>>> ? ? ? ? ? ? ? ? self.__name=name-->通過傳參數(shù)固该,為私有變量__name復(fù)賦值

>>> ? ? ?def get_name(self):-->定義公有g(shù)et函數(shù),用以類外獲取對象私有屬性的值

>>> ? ? ? ? ? ? ? ? return self.__name

>>> ? ? ?def set_name(self,n):-->定義公有set函數(shù)糖儡,用以類外修改私有屬性的值

>>> ? ? ? ? ? ? ? ? self.__name=n

>>>person=Person("tom")

>>>print(person.get_name())

>>>person.set_name("tony')

>>>print(person.get_name())

這個程序就實現(xiàn)了封裝蹬音,將__name屬性定義為私有屬性,外界不可對其直接訪問休玩,只能通過類內(nèi)定義的set和get函數(shù)實現(xiàn)對屬性的修改和提取,最終輸出的結(jié)果是("tom")("tony")y

@property劫狠,@(method).setter這兩個注解更加嚴(yán)密的隱藏了類的方法拴疤,把set和get函數(shù)注解為對象,然后用對象的操作方法操作這兩個函數(shù)如:

>>> ? ? ?@property

>>>? ? ? def get_name(self):-->定義公有g(shù)et函數(shù)独泞,用以類外獲取對象私有屬性的值

>>> ? ? ? ? ? ? ? ? return self.__name

>>> ? ? ?@get_name.setter

>>> ? ? ?def set_name(self,n):-->定義公有set函數(shù)呐矾,用以類外修改私有屬性的值

>>> ? ? ? ? ? ? ? ? self.__name=n

函數(shù)的重載使面向?qū)ο蟮姆庋b達(dá)到了一個新的高度,搭配@property和@(method).setter使函數(shù)的工作方法徹底隱藏懦砂,函數(shù)的重載又稱為偽方法重載蜒犯,偽方法重載:python中组橄,默認(rèn)不提供方法重載,但是在高級封裝的過程中罚随,又出現(xiàn)了類似方法重載的代碼語法玉工,所以~稱之為偽方法重載,語法如下:

>>>? ? ? @property

>>>? ? ? def name(self):

>>> ? ? ? ? ? ? ? ? return self.__name

>>> ? ? ?@get_name.setter

>>> ? ? ?def name(self,n):

>>> ? ? ? ? ? ? ? ? self.__name=n

這里有兩個函數(shù)名為name的函數(shù)淘菩,雖然有不同的函數(shù)作用遵班,但是函數(shù)名相同,參數(shù)不同潮改,這種方式成為偽方法重載狭郑,在類外調(diào)用時,跟對象的使用方式一樣汇在,所以可以很好的隱藏工作方法

將對象的數(shù)據(jù)與操作數(shù)據(jù)的方法相結(jié)合翰萨,通過方法將對象的數(shù)據(jù)與實現(xiàn)細(xì)節(jié)保護(hù)起來,就稱為封裝糕殉。外界只能通過對象的方法訪問對象亩鬼,因此封裝同時也實現(xiàn)了對象的數(shù)據(jù)隱藏。

在使用面向?qū)ο蟮姆庋b特性時糙麦,需要:將內(nèi)容封裝到某處辛孵,和從某處調(diào)用被封裝的內(nèi)容

總體來說,封裝的意義就是實現(xiàn)了對象的數(shù)據(jù)隱藏

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赡磅,一起剝皮案震驚了整個濱河市魄缚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌焚廊,老刑警劉巖冶匹,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異咆瘟,居然都是意外死亡嚼隘,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進(jìn)店門袒餐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來飞蛹,“玉大人,你說我怎么就攤上這事灸眼∥蚤埽” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵焰宣,是天一觀的道長霉囚。 經(jīng)常有香客問我,道長匕积,這世上最難降的妖魔是什么盈罐? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任榜跌,我火速辦了婚禮,結(jié)果婚禮上盅粪,老公的妹妹穿的比我還像新娘钓葫。我一直安慰自己,他們只是感情好湾揽,可當(dāng)我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布瓤逼。 她就那樣靜靜地躺著,像睡著了一般库物。 火紅的嫁衣襯著肌膚如雪霸旗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天戚揭,我揣著相機與錄音诱告,去河邊找鬼。 笑死民晒,一個胖子當(dāng)著我的面吹牛精居,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播潜必,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼靴姿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了磁滚?” 一聲冷哼從身側(cè)響起佛吓,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎垂攘,沒想到半個月后维雇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了掌逛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡津滞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出灼伤,到底是詐尸還是另有隱情据沈,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布饺蔑,位于F島的核電站,受9級特大地震影響嗜诀,放射性物質(zhì)發(fā)生泄漏猾警。R本人自食惡果不足惜孔祸,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望发皿。 院中可真熱鬧崔慧,春花似錦、人聲如沸穴墅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽玄货。三九已至皇钞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間松捉,已是汗流浹背夹界。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留隘世,地道東北人可柿。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像丙者,于是被迫代替她去往敵國和親复斥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內(nèi)容