0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

python的類訪問控制

馬哥Linux運維 ? 來源:lq ? 2018-12-10 16:39 ? 次閱讀

python類中,有屬性和方法,外部代碼可以直接通過實例來訪問修改。

如果需要讓內(nèi)部的屬性不被外部訪問到,在屬性變量前面加上__2個下劃線。

在python中,實例的變量名如果是由__2個下花錢開頭的,就代表這是一個私有變量:只有內(nèi)部可以訪問,外部不許直接通過類或者實例訪問。

代碼:

雖然說外部訪問不了一個內(nèi)部私有屬性,但是可以通過類中方法間接的訪問、修改

類內(nèi)部方法getname和setname:

雙下劃線開頭的私有屬性,是不是一定不能從外部訪問呢?

其實不是的:

python中2個有趣的現(xiàn)象,外部變量遮蔽類中的變量。

從實例中訪問類屬性必須要謹(jǐn)慎。

和通常python變量一樣,任何對實例屬性的賦值都會創(chuàng)建一個實例屬性(如果實例屬性不存在的話),并且對其賦值。

但是,如果類屬性中存在同名的屬性,就是產(chǎn)生前面所說的有趣的副作用。

python3.x依舊存在這個情況。

下面上代碼:

為什么下面的dict類型的就會del報錯呢??

原因在于:python是由c寫成的cpython。

c語言中,并沒有字符串這個概念:c中叫做字符數(shù)組,存儲在內(nèi)存中,是一塊連續(xù)的空間,不可修改,任何修改字符數(shù)組的行為,都會在不影響原始的字符數(shù)組下,創(chuàng)建產(chǎn)生一個新的字符數(shù)組。

而dict就不一樣了,它在內(nèi)存中存儲,是一系列非連續(xù)的內(nèi)存空間,可以在原來的基礎(chǔ)上修改,所以,第二個例子中del f.x就會報錯。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7581

    瀏覽量

    135587
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4758

    瀏覽量

    84292

原文標(biāo)題:python的類訪問控制

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    如何使用Python? 優(yōu)勢有哪些?

    pupil.print_score () 語句,調(diào)用實例的方法就是調(diào)用的方法,而這個方法是按照格式打印出  pupil.name:pupil.score,mlilei: 99?! ?b class='flag-5'>Python優(yōu)勢有哪些?  1.
    發(fā)表于 07-30 18:08

    python的理解與使用

    新式的寫法,與之對應(yīng)的是 Python 2 的經(jīng)典寫法。3. 如何實例化?定義了之后,就可以通過下邊的寫法實例化它,并訪問屬性,調(diào)用方
    發(fā)表于 03-07 16:51

    python的多態(tài)和的property屬性

    python的多態(tài)多態(tài),是指在同一型下的不同形態(tài)。比如下面這段代碼class People: def speak(self):passclass American(People): def
    發(fā)表于 03-09 16:38

    python開發(fā)之‘’講解

    Python 在盡可能不增加新的語法和語義的情況下加入了機制。這種機制是 C++ 和 Modula-3 的混合。 Python中的沒有在用戶和定義之間建立一個絕對的屏障,而是依賴于
    發(fā)表于 03-15 14:12 ?1次下載

    揭開Python中self的神秘面紗

    許多python初學(xué)者,在接觸到python面向?qū)ο蟮臅r候,就被中包含的方法中的self打敗了,不知道self是何物?
    的頭像 發(fā)表于 01-19 17:51 ?1735次閱讀
    揭開<b class='flag-5'>Python</b><b class='flag-5'>類</b>中self的神秘面紗

    為什么要學(xué)習(xí)Python?Python的定義是怎么樣的應(yīng)該如何使用

    無法訪問私有變量,從而保證的設(shè)計思想和內(nèi)部結(jié)構(gòu)并不完全對外公開。在 Python中除了xxx格式的成員變量外,其他的成員變量都是公有變量。
    發(fā)表于 09-02 17:50 ?12次下載
    為什么要學(xué)習(xí)<b class='flag-5'>Python</b>?<b class='flag-5'>Python</b>中<b class='flag-5'>類</b>的定義是怎么樣的應(yīng)該如何使用

    10種聚介紹和Python代碼

    分享一篇關(guān)于聚的文章,10種聚介紹和Python代碼。
    的頭像 發(fā)表于 07-30 10:25 ?2925次閱讀

    簡述python和實例屬性賦值

    python主體沒有任何內(nèi)容,只有pass語句,稱為空。 ## 1.2 obj.attr屬性賦值 通過obj.attr=value進行和實例屬性賦值。
    的頭像 發(fā)表于 02-21 10:30 ?969次閱讀

    Python的屬性和方法是什么

    編程中我們用來創(chuàng)建對象。日常生活中的汽車設(shè)計圖就是我們Python中的。日常生活中的小汽車就是Python中的對象。
    的頭像 發(fā)表于 02-23 10:17 ?809次閱讀

    什么是python與對象

    Python中的,type函數(shù)查看數(shù)據(jù)類型
    的頭像 發(fā)表于 02-23 10:18 ?698次閱讀

    Python中輕松調(diào)用Java方法-PyJNIus

    PyJNIus 是一個神奇的 Python 第三方模塊。它能使用Java本地接口將Java作為Python訪問
    的頭像 發(fā)表于 02-24 13:49 ?1665次閱讀

    Python中的和對象詳解

    Python 是一種面向?qū)ο蟮木幊陶Z言,它支持和對象。是一種用戶自定義的數(shù)據(jù)類型,用于定義對象的屬性和方法。對象是的實例,它包含的屬
    的頭像 發(fā)表于 04-20 16:53 ?1016次閱讀

    PyJNIus:在Python中輕松調(diào)用Java方法

    PyJNIus 是一個神奇的 Python 第三方模塊。它能使用Java本地接口將Java作為Python訪問
    的頭像 發(fā)表于 10-30 11:32 ?744次閱讀

    PyJNIus :讓你在Python中輕松調(diào)用Java方法

    PyJNIus 是一個神奇的 Python 第三方模塊。它能使用Java本地接口將Java作為Python訪問
    的頭像 發(fā)表于 11-01 10:45 ?716次閱讀

    Python中元的作用

    1.什么是 在理解元之前,我們必須先掌握Python中的(class)。 和大多數(shù)語言一樣,Python中的
    的頭像 發(fā)表于 11-02 11:18 ?449次閱讀
    <b class='flag-5'>Python</b>中元<b class='flag-5'>類</b>的作用