色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

python私有變量和私有方法

python爬蟲知識分享 ? 來源:python爬蟲知識分享 ? 作者:python爬蟲知識分享 ? 2022-03-08 16:30 ? 次閱讀

python私有變量和私有方法

1. 下劃線妙用

在 Python 中,下劃線可是非常推薦使用的符號:

變量名推薦使用下劃線分隔的蛇形命名法

魔法方法、構造函數都需要使用雙下劃線

對于暫時用不到的變量值,可以賦值給單下劃線 _ 進行占位

根據分類,我把下劃線寫法分成下面五種:

單前導下劃線:_var

單末尾下劃線:var_

雙前導下劃線:__var

雙前導和末尾下劃線:__var__

單下劃線:_

由于篇幅所限,本篇將只介紹跟標題(私有變量與私有方法)有關的用法,也就是訪問控制。

上面五種寫法中,涉及到訪問控制的有:_var__var

2. 單前導下劃線 _var

下劃線前綴的含義是告知其他程序員以單個下劃線開頭的變量或方法僅供內部使用

請看下面這個例子

class Demo:
   def __init__(self):
       self.foo = 11
       self._bar = 22

如果你實例化此類,然后分別訪問 self.fooself._bar 會發生什么情況?

>>> demo = Demo()
>>> demo.foo
11
>>> demo._bar
22

結果是:外界都可以直接訪問這兩個屬性。

但實際上,二者是有區別的。PEP 8 有提及,如果一個屬性的有單前導下劃線,則該屬性應該僅供內部訪問。

但這并不是強制性的,不然上面我們也不可能通過 self._bar 訪問到 22,但做為一名 Python 程序員最好遵守這一共識。

3. 雙前導下劃線 __var

雙下劃線前綴會導致Python解釋器重寫屬性名稱,以避免子類中的命名沖突。

這也叫做名稱修飾(name mangling) - 解釋器更改變量的名稱,以便在類被擴展的時候不容易產生沖突。

我知道這聽起來很抽象。因此,我組合了一個小小的代碼示例來予以說明:

class Demo:
   def __init__(self):
       self.foo = 11
       self._bar = 22
       self.__baz = 33

將其進行實例化,然后使用 dir() 函數查看這個對象的屬性

>>> demo = Demo()
>>> dir(demo)
['_Demo__baz', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_bar', 'foo']

不難發現,foo_bar 都很正常,可以使用 demo.屬性名 進行訪問。

__baz 明顯和 foo_bar 不一樣,嘗試訪問后卻報了 AttributeError,屬性不存在。

>>> demo.__baz
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: 'Demo' object has no attribute '__baz'

如果你仔細觀察,你會看到此對象上有一個名為_Demo__baz的屬性。這就是Python解釋器所做的名稱修飾。它這樣做是為了防止變量在子類中被重寫。

如果想訪問,那得按照 dir 提示的寫法去訪問,在 __baz 前面加上 _類名

>>> demo._Demo__baz
33

總結可得,使用雙下劃線開頭的屬性變量,就是一個私有變量。

這樣的規則在屬性上生效,在方法上也同樣適用。

如果一個實例方法,以雙下劃線開頭,那么這個方法就是一個私有的方法,不能由實例對象或者類直接調用。

必須得通過 實例._類名__方法名 來調用。

4. 總結一下

Python并沒有真正的私有化支持,但可用下劃線得到偽私有。

盡量避免定義以下劃線開頭的變量。

私有變量:以雙下劃線前導的變量,可以使用 實例._類名__變量名 進行訪問

私有方法:以雙下劃線前導的方法,可以使用 實例._類名__方法名() 進行訪問

私有變量和私有方法,雖然有辦法訪問,但是仍然不建議使用上面給出的方法直接訪問,而應該用統一的接口(函數入口)來對私有變量進行查看、變量,對私有方法進行調用。

審核編輯:符乾江

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4327

    瀏覽量

    62574
  • 代碼
    +關注

    關注

    30

    文章

    4780

    瀏覽量

    68529
  • python
    +關注

    關注

    56

    文章

    4792

    瀏覽量

    84630
收藏 人收藏

    評論

    相關推薦

    公有云存儲和私有云存儲哪個好一些?

    公有云存儲和私有云存儲各有優劣,選擇取決于業務需求。公有云存儲成本效益高、可擴展性強、維護管理便捷,適合需求波動大的場景;而私有云存儲提供數據控制、高安全性和定制化能力,適合對數據安全和合規性要求高的企業。企業應根據自身需求權衡選擇。以下是UU云小編對兩者的詳細比較:
    的頭像 發表于 11-19 10:53 ?155次閱讀

    SAP ERP 私有云和RISE with SAP 有什么區別?

    SAP ERP 私有云版是一款 ERP 云解決方案,也是 RISE with SAP 的核心。SAP ERP 私有云版是SAP公司提供的一種企業資源規劃(ERP)解決方案,它結合了傳統的SAP
    的頭像 發表于 11-18 09:20 ?231次閱讀

    k8s可以部署私有云嗎?私有云部署全攻略

    Kubernetes(簡稱K8S)可以部署私有云。Kubernetes是一個開源的容器編排引擎,能夠自動化容器的部署、擴展和管理,使得應用可以在各種環境中高效運行。通過使用Kubernetes,企業可以在自己的數據中心或私有云環境中搭建和管理容器化的應用,實現高度的靈活性
    的頭像 發表于 10-25 09:32 ?158次閱讀

    公有IP與私有IP之間的區別

    今天我們來分享私有IP地址和公有IP地址的有什么區別?主要從接入方式、特點以及各自的優勢來說明。
    的頭像 發表于 09-21 10:49 ?409次閱讀

    使用Nexus在本地搭建npm、yum和maven私有倉庫

    使用Nexus在本地搭建npm、yum和maven私有倉庫 為保證在無互聯網的情況下,可正常搭建、構建項目,并自動化部署項目,本系統采用Nexus+Jenkins+Maven+Gitlab開源組件
    的頭像 發表于 08-21 14:46 ?316次閱讀
    使用Nexus在本地搭建npm、yum和maven<b class='flag-5'>私有</b>倉庫

    智能水電表管理系統支持本地私有化部署嗎?

    智能水電表管理系統,作為智慧城市建設中的關鍵組件,正逐步改變著能源計量與管理的傳統模式。面對日益增長的數據安全需求及特定行業的合規性考量,越來越多的企業和機構開始關注系統的本地私有化部署方案。本文將
    的頭像 發表于 08-12 20:32 ?267次閱讀
    智能水電表管理系統支持本地<b class='flag-5'>私有</b>化部署嗎?

    美國洛杉磯私有云核心優勢是什么?

    美國洛杉磯私有云以其高安全性、優越的地理位置、強大的硬件資源和出色的服務質量而備受全球企業和個人用戶的青睞。在全球化的科技與經濟格局中,選擇一個合適的私有云服務平臺對于企業和個人的數字化轉型至關重要。Rak部落為您整理發布美國洛杉磯私有
    的頭像 發表于 08-12 10:21 ?193次閱讀

    基于WDS的天瑞水泥企業高性能私有云存儲方案

    基于WDS的天瑞水泥企業高性能私有云存儲方案
    的頭像 發表于 07-31 09:47 ?294次閱讀
    基于WDS的天瑞水泥企業高性能<b class='flag-5'>私有</b>云存儲方案

    海外青云私有云:企業的數字化轉型得力助手

    在全球化日益加深的今天,海外企業對于云計算的需求也愈發迫切。青云(QingCloud)作為一家領先的云計算服務提供商,其私有云產品在海外市場上受到了廣泛的關注和認可。那么,海外青云私有云究竟有何用處呢?本文將從多個角度為您科普。
    的頭像 發表于 06-25 10:11 ?235次閱讀

    ESP32-C3私有服務的UUID設置為128bit UUID會報錯怎么解決?

    esp-idfexamplesbluetoothbluedroidblegatt_server_service_table的DEMO上修改16bit 的私有服務UUID為128bit的UUID,但改完后燒錄的串口信息會報錯,ble調試軟件可以連接上藍牙但是看不到該服務,我想知道是否有修改128bit UUID的相關
    發表于 06-20 08:19

    綠聯NAS DXP系列發布:內網穿透技術在私有云的應用分析

    對于NAS私有云來說,內外穿透會在不同網絡環境(如內網和外網)之間實現數據訪問和共享的能力,在這個背景下,內外穿透技術對于NAS私有云來說可能具有以下潛在應用
    的頭像 發表于 05-24 12:06 ?388次閱讀
    綠聯NAS DXP系列發布:內網穿透技術在<b class='flag-5'>私有</b>云的應用分析

    什么是虛擬私有網VPN?VPN的常用技術有哪些?

    VPN定義(Vitual Private Network,虛擬私有網):是指依靠ISP或其他NSP在公用網絡基礎設施之上構建的專用的安全數據通信網絡,只不過這個專線網絡是邏輯上的而不是物理的,所以稱為虛擬專用網。
    的頭像 發表于 04-01 10:13 ?1747次閱讀
    什么是虛擬<b class='flag-5'>私有</b>網VPN?VPN的常用技術有哪些?

    請問可以私有部署嗎

    有沒有插件或者私有部署的服務
    發表于 02-01 16:00

    通過TC275 CPU0使用私有地下訪問PSDR后出錯了怎么解決?

    通過 TC275 CPU0 使用私有地下訪問PSDR后出錯了。再次 downloading,defale 還沒有,有解決方法嗎?
    發表于 01-19 08:07

    mec邊緣計算與私有云的區別

    Mec邊緣計算與私有云是目前云計算領域中兩個熱門的概念。盡管它們都是用來處理數據、存儲和處理計算任務的技術,但在架構、功能以及應用場景等方面存在著顯著的區別。 首先,我們來說一說私有云。私有云是一種
    的頭像 發表于 12-27 15:31 ?1009次閱讀
    主站蜘蛛池模板: 婷婷五月久久精品国产亚洲| 摸老师丝袜小内内摸出水| 麻豆一区二区三区蜜桃免费| 人人爽天天碰狠狠添| 亚洲精品电影久久久影院| 97在线免费观看| 国产成人自拍视频在线观看| 久久久久免费视频| 色橹橹欧美在线观看视频高清 | 97久久精品视频| 国产高清在线露脸一区| 久久这里只精品热在线99| 99久久re6热精品首页| 国产传媒精品1区2区3区| 麻豆官网入口| 亚洲 无码 制服 日韩| 99在线观看视频免费| 吉吉影音先锋av资源| 日本无修肉动漫在线观看| 中文字幕不卡在线视频| 国产精品点击进入在线影院高清| 榴莲黄版无限刷| 亚洲 日韩 在线 国产 精品| ebc5恐怖5a26房间| 久久精品国产久精国产果冻传媒| 熟妇的味道HD中文字幕| 99国产在线视频有精品视频| 簧片高清在线观看| 日日啪无需播放器| 76人遣返航班上71人呈阳性| 国语自产拍大学生在线观看| 色多多污污在线播放免费| 4438成人情人网站| 精品视频在线观看视频免费视频| 深夜草逼逼| 99视频精品在线| 久久两性视频| 亚洲人成网站在线播放| 国产精品线路一线路二| 日本xxxxxxx| 99精品国产第一福利网站|