Python中真的有私有化操作嗎剿牺?

這將是有爭議的一篇文章

Python中真的有私有化操作嗎?

這篇文章环壤,我們將會從這樣幾個方面進行講解

  1. 面向?qū)ο笊估矗倳龅椒庋b的概念,封裝就會涉及到私有化的概念郑现,Python中真的有私有化操作嗎湃崩?
  2. 面向?qū)ο螅灿欣^承的概念接箫,繼承就會涉及到私有化數(shù)據(jù)是否能被繼承的問題攒读,Python中能繼承"私有屬性/私有方法"嗎?

當然辛友,秉持以往的習慣薄扁,我們依然通過代碼和原理跟大家一起分析。

1. Python中私有化的由來

寫在前面废累,那是一段與世無爭的時光

Python的發(fā)展是受到當時ABC語言和C語言的影響邓梅,結合他們的優(yōu)勢而開發(fā)出來的一門動態(tài)類型語言,同時兼具面向過程開發(fā)和面向?qū)ο箝_發(fā)的優(yōu)點邑滨,針對不同類型的震放、不同規(guī)模的項目,可以有針對性的驼修、快捷的完成項目功能處理。隨著Python逐步拓展到行業(yè)中的各個方面诈铛,和其他純面向?qū)ο蟮母呒壵Z言之間的平行交叉越來越明顯乙各,于是乎出現(xiàn)了各種項目開發(fā)約束和規(guī)范。今天我們要說的私有化幢竹,就是其中的一種約束規(guī)范耳峦。

約定的私有化

項目中我們開發(fā)公共模塊的過程中,為了和其他語言一樣焕毫,能給某些特定的屬性添加合法的數(shù)據(jù)蹲坷,或者在處理過程中將某些業(yè)務的實現(xiàn)隱藏在內(nèi)部,通過公開方法完成合法訪問邑飒,出現(xiàn)了私有化的概念循签,這里的私有化是一種約定的私有化操作,在腳本程序疙咸、數(shù)據(jù)爬蟲以及自動化運維盛行的那些年县匠,大家約定了模塊中或者類型中使用了單個下劃線開頭的屬性或者方法,是當前模塊或者類型私有的屬性和方法,(約定)不允許模塊外部或者類型外部去使用它們乞旦。

"""
這是一個自定義模塊
"""
# 公開變量
info = "模塊中的變量數(shù)據(jù)贼穆,可以被其他模塊使用"
# 約定規(guī)范
_message = "模塊中的約定私有變量,僅限當前模塊中使用兰粉,(約定)不允許其他模塊使用"


class Example:
    
    def __init__(self, param1, param2):
        # 公共屬性故痊,可以在類型外部通過對象直接調(diào)用使用
        self.param1 = param1
        # 私有屬性,約定只在當前類型內(nèi)部使用玖姑,類型外部不讓使用
        self._param2 = param2
    
    def _private_method(self):
        """私有方法"""
        print("當前類型內(nèi)部使用的方法愕秫,(約定)類型外部不可以訪問")
    
    def public_method(self):
        """公共方法"""
        print("外界可以通過類型的對象直接調(diào)用執(zhí)行,允許外界訪問")

但是這樣的約定客峭,很容易被團隊中的新成員破壞豫领,項目構建的規(guī)模越大,參與的人員越多舔琅,約定的項目規(guī)范在需求開發(fā)周期較為緊張的時候等恐,出現(xiàn)問題的幾率就非常大,參與過中大型項目開發(fā)的同胞們應該深有體會备蚓,尤其是那一個個趕需求的日日夜夜课蔬,等時過境遷再看曾經(jīng)寫的代碼,都是為了追求趕需求周期而寫的慘不忍睹的代碼郊尝!

語法強制私有化二跋?!

在項目開發(fā)過程中流昏,大家開始從語法層面探索私有化的解決方案扎即,于是有開發(fā)團隊開始使用一種新的語法格式來實現(xiàn)私有化方案:使用雙下劃線字符開頭的變量,這樣的變量確實在語法上實現(xiàn)了不能被外界直接訪問的目的况凉。

"""
私有化
    語法私有化操作
"""


class Example:
    """案例類型"""
    def __init__(self, name):
        """初始化屬性"""
        self.__name = name

    def __private_method(self):
        """私有方法"""
        print("只能在類型中被訪問的方法..")


# 創(chuàng)建對象
example = Example("Python")

# 不能訪問“私有屬性”了
print(example.__name)  
# AttributeError: 'Example' object has no attribute '__name'

# 不能執(zhí)行私有方法了
example.__private_method()  
# AttributeError: 'Example' object has no attribute '__private_method'

但是這里要說的是谚鄙,某些團隊開始這么干,沒有正式項目組去這么操作刁绒,很多同事經(jīng)歷的公司開發(fā)中大型項目闷营,基本還是按照原始的單下劃線約定的方式,進行私有化約定處理知市,并且現(xiàn)在的公司有了項目代碼質(zhì)量檢查后傻盟,已經(jīng)規(guī)范了太多,以前項目開發(fā)不規(guī)范的問題嫂丙,已經(jīng)很少見了娘赴;但是不可否認的是,上述雙下劃線開頭的語法特征跟啤,在很多第三方工具模塊中就比較常見筝闹。

盡管不推薦媳叨,但是我們不反對這樣的語法習慣,前提是首先要符合項目組的開發(fā)規(guī)范关顷。這里需要強調(diào)的是:這樣真的就做到語法私有化了嗎糊秆?

Python真的有私有化嗎?

Python語法是從參考ABC語言和C語言的語法語義習慣议双,過度過來的一門高級編程語言痘番,吸收了面向?qū)ο蟾呒壵Z言的特性同時兼容快捷的面向過程的處理特征,語法中已經(jīng)具備了很多純面向?qū)ο笳Z言通過大量編碼才能實現(xiàn)的設計模式平痰,所以對于完全私有化的操作在語法層面并不支持汞舱,而是提倡數(shù)據(jù)可用性,因為軟件的目的就是為了解決問題而存在的宗雇,解決問題的核心就是處理數(shù)據(jù)昂芜,合理的處理數(shù)據(jù)才是最終的目的,在語法上通過私有化的操作有點花費太多資源和精力去作了和業(yè)務關系不大的事情赔蒲,而追求簡潔泌神、簡單、簡易的Python語法對此是比較抗拒的舞虱!

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末欢际,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子矾兜,更是在濱河造成了極大的恐慌损趋,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件椅寺,死亡現(xiàn)場離奇詭異浑槽,居然都是意外死亡,警方通過查閱死者的電腦和手機返帕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門桐玻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人溉旋,你說我怎么就攤上這事〖邓瑁” “怎么了观腊?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長算行。 經(jīng)常有香客問我梧油,道長,這世上最難降的妖魔是什么州邢? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任儡陨,我火速辦了婚禮褪子,結果婚禮上,老公的妹妹穿的比我還像新娘骗村。我一直安慰自己嫌褪,他們只是感情好,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布胚股。 她就那樣靜靜地躺著笼痛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪琅拌。 梳的紋絲不亂的頭發(fā)上缨伊,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機與錄音进宝,去河邊找鬼刻坊。 笑死,一個胖子當著我的面吹牛党晋,可吹牛的內(nèi)容都是我干的谭胚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼隶校,長吁一口氣:“原來是場噩夢啊……” “哼漏益!你這毒婦竟也來了?” 一聲冷哼從身側響起深胳,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤绰疤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后舞终,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體轻庆,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年敛劝,在試婚紗的時候發(fā)現(xiàn)自己被綠了余爆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡夸盟,死狀恐怖蛾方,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情上陕,我是刑警寧澤桩砰,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站释簿,受9級特大地震影響亚隅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜庶溶,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一煮纵、第九天 我趴在偏房一處隱蔽的房頂上張望懂鸵。 院中可真熱鬧,春花似錦行疏、人聲如沸匆光。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽殴穴。三九已至,卻和暖如春货葬,著一層夾襖步出監(jiān)牢的瞬間采幌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工震桶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留休傍,地道東北人。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓蹲姐,卻偏偏與公主長得像磨取,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子柴墩,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355

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