本文關(guān)鍵闡述了python中的特性管理模式,主要包含私有屬性和特性局限-__slots__方式,原文中闡述了python中怎樣去聲明變量的基本知識,必須的小伙伴可以借鑒一下
一、私有屬性
Python并沒真正意義上的民營化適用,但可以用下橫線獲得偽私,其中一項(xiàng)大部分Python編碼都遵照的好習(xí)慣:含有下橫線,作為前綴的名字應(yīng)被稱作非公開的API中的一部分(不論是函數(shù)公式、方式或是數(shù)據(jù)成員)
python中私并無法實(shí)現(xiàn)真正意義上的私,只不過是在儲存屬性情況下改了一個名稱,在外部不能直接方式
私有屬性主要表現(xiàn)為:
_參數(shù)名:聲明式私有屬性
__參數(shù)名:_類名+私有屬性名
classAttributes: attr=100 #聲明式私有屬性 _attr2=999 #_類名+私有屬性名 __attr3=888 print(Attributes.attr) print(Attributes._attr2)
雙下劃線的私有屬性,去啟用時,并沒__attr3這一屬性名,用dict特性,去查詢特性詞典看看:
能夠看見是雙下劃線的私有屬性是:_類名+私有屬性名
二、特性局限-__slots__方式
界定過slots屬性來局限類案例的特性,只有關(guān)聯(lián)slots特定的特性,不可以加上slots以外的特性
加上slots以外的特性,就會直接出錯
classDemo:
應(yīng)用__slots__給目標(biāo)做特性局限,只有加上特定特性name,age
__slots__=['name','age'] m=Demo() m.name=111 m.age=18 print(m.name,m.age) 前去加上特定特性以外的特性 m.sex=男
執(zhí)行結(jié)果:
出錯:AttributeError:‘Demo’objecthasnoattribute‘sex’目標(biāo)Demo并沒有‘sex’這一特性
三、python中怎樣去聲明變量
詞法:主要參數(shù),屬性種類
比如:a:int=[11,22,3]主要參數(shù)a,為非int,數(shù)值[11,22,3]
python中能夠聲明變量或參數(shù)種類,但實(shí)際上執(zhí)行命令一般不會去校檢種類
a:int="python"#設(shè)定的為int種類,可是傳值為字符串類型 b:str=11#設(shè)定的為字符串類型,可是傳值為int種類 c:list={11,22,33}#設(shè)定的為列表,可是傳值為詞典 print(a,b,c)#==========》依然可以實(shí)行打印出來 #函數(shù)參數(shù)的類型聲明: defwork(name:str,age:int):#設(shè)定的為字符串類型和int種類 print('name的數(shù)值',name) print('age的數(shù)值',age) #實(shí)際傳參一個列表,一個詞典 work([11,22,33],{'a':1,'b':2})
執(zhí)行結(jié)果:
四、python中的有關(guān)特性
__getattr__方式:
使用方法:獲得特性,特性不會有時開啟的辦法
獨(dú)特步驟:當(dāng)去獲得特性時,先實(shí)行__getattribute__去看是否有特性,有就回到,假如沒有的話去行動__getattr__方式,回到特性不會有
getattribute(self,item):
使用方法:特性瀏覽開啟的魔術(shù)師方式,搜索特性時,首位時間能啟用此方法
setattr(self,key,value): 使用方法:設(shè)定屬性方式,設(shè)定特性時,啟用此方法設(shè)定特性 __delattr__方式: 使用方法:在del刪除特性時開啟,刪除屬性方式 classMyDemo(object): def__getattribute__(self,item): """ 特性瀏覽開啟的魔術(shù)師方式 :paramitem:獲取的屬性名 :return:獲取到的屬性值 """ print("您要獲得的特性為:",item) value=super().__getattribute__(item)#繼承父類 returnvalue def__setattr__(self,key,value): """ 設(shè)定屬性方式 :paramkey:屬性名 :paramvalue:屬性值 :return: """ print("您要設(shè)定的屬性名{},屬性值為:{}".format(key,value)) super().__setattr__(key,value) def__delattr__(self,item): """ 刪除屬性方式 :paramitem:屬性名 :return: """ print("您要刪除的特性為:",item) super().__delattr__(item) def__getattr__(self,item): """ 獲得特性,特性不會有時開啟的辦法 :paramitem: :return: """ print("獲得的特性{},不會有".format(item)) return99 m=MyDemo() print("*************************特性設(shè)定******************************") #特性設(shè)定 #設(shè)定特性方式一: m.aa=999 m.name='musen' #設(shè)定特性方式二:setattr方式: setattr(MyDemo(),'age',18) print("************************獲得特性*******************************") #獲得特性 #方式一: print(m.aa) print(m.name) #方式二:getattr方式 print(getattr(m,'name')) print("************************刪除特性********************************") #刪除特性 #方式一: delm.aa #方式二:delattr方式 delattr(m,'age')
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家?guī)韼椭?/p>
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/130282.html
摘要:私有倉庫是,并在中運(yùn)行。不要使用或?yàn)橹鳈C(jī)名注冊表服務(wù)需要由外部客戶端訪問或,默認(rèn)為用于訪問和令牌通知服務(wù)的協(xié)議。打開或關(guān)閉,默認(rèn)打開打開此屬性時,準(zhǔn)備腳本創(chuàng)建私鑰和根證書,用于生成驗(yàn)證注冊表令牌。 上一篇文章搭建了一個具有基礎(chǔ)功能,權(quán)限認(rèn)證、TLS 的私有倉庫,但是Docker Registry 作為鏡像倉庫,連管理界面都沒有,甚至連一些運(yùn)維必備的功能都是缺失的,還有什么 Docker...
摘要:開源即時網(wǎng)絡(luò)爬蟲項(xiàng)目將與基于的異步網(wǎng)絡(luò)框架集成,所以本例將使用采集淘寶這種含有大量代碼的網(wǎng)頁數(shù)據(jù),但是要注意本例一個嚴(yán)重缺陷用加載網(wǎng)頁的過程發(fā)生在中,破壞了的架構(gòu)原則。 showImg(https://segmentfault.com/img/bVyzAX); 1,引言 本文講解怎樣用Python驅(qū)動Firefox瀏覽器寫一個簡易的網(wǎng)頁數(shù)據(jù)采集器。開源Python即時網(wǎng)絡(luò)爬蟲項(xiàng)目將與S...
摘要:以下內(nèi)容僅針對版書籍,等新版上市后,薦書欄目會對兩版的差異跟進(jìn)介紹。當(dāng)然,后續(xù)其它薦書的書目,也很有可能會送福利,一樣不容錯過。 showImg(https://segmentfault.com/img/bVbjIxq?w=6000&h=4000); 大家好,新一期的薦書欄目如期跟大家見面了。 先來看看今天的主角是誰:《Python源碼剖析——深度探索動態(tài)語言核心技術(shù)》,2008年出版...
閱讀 892·2023-01-14 11:38
閱讀 837·2023-01-14 11:04
閱讀 688·2023-01-14 10:48
閱讀 1891·2023-01-14 10:34
閱讀 894·2023-01-14 10:24
閱讀 752·2023-01-14 10:18
閱讀 481·2023-01-14 10:09
閱讀 521·2023-01-14 10:02