類(lèi)和對(duì)象2

一.類(lèi)方法和靜態(tài)方法

類(lèi)中方法:對(duì)象方法、類(lèi)方法和靜態(tài)反對(duì)方

1.對(duì)象方法:

a.直接聲明在類(lèi)中
b.自帶參數(shù)self
c.通過(guò)對(duì)象來(lái)調(diào)用


image.png

2.類(lèi)方法:

a.聲明在@classmethod后面的函數(shù)就是類(lèi)方法
b.自帶參數(shù)cls(在函數(shù)調(diào)用的時(shí)候不用傳參,系統(tǒng)會(huì)自動(dòng)將調(diào)用這個(gè)方法的類(lèi)賦給它)
c.通過(guò)類(lèi)來(lái)調(diào)用


image.png

3.靜態(tài)方法:

a.聲明在@staticmethod后面的函數(shù)就是靜態(tài)方法
b.沒(méi)有自帶的參數(shù)
c.通過(guò)類(lèi)來(lái)調(diào)用


image.png

4.怎么選擇使用哪個(gè)方法:(重點(diǎn)!)

a.對(duì)象方法:如果實(shí)現(xiàn)函數(shù)的功能需要用到對(duì)象的屬性,那么就把這個(gè)函數(shù)聲明成對(duì)象方法
b.靜態(tài)方法和類(lèi)方法:實(shí)現(xiàn)函數(shù)的功能不需要用到對(duì)象的屬性,就可以選擇用靜態(tài)方法或者類(lèi)方法
類(lèi)方法:在不使用對(duì)象屬相的前提,需要使用類(lèi)
靜態(tài)方法:既不需要對(duì)象的屬性也不需要類(lèi)

二.私有化

類(lèi)中的內(nèi)容默認(rèn)都是公開(kāi)的(在類(lèi)外面可以使用)

1.私有化--->將類(lèi)的內(nèi)容在類(lèi)的外面隱藏

在類(lèi)中方法名或者屬性名前加兩個(gè)下劃線(xiàn)(不能以?xún)蓚€(gè)下劃線(xiàn)結(jié)束)
私有的方法和屬性只能在類(lèi)的內(nèi)部使用,不能再類(lèi)的外部使用

2.python中沒(méi)有真正的私有化(沒(méi)有從訪(fǎng)問(wèn)權(quán)限上去限制內(nèi)容的訪(fǎng)問(wèn))

私有的原理就是在私有的屬性名和方法名前綴加‘_類(lèi)名’來(lái)阻止外部直接通過(guò)下劃線(xiàn)的名字去使用屬性和方法


image.png

三.getter和setter

1.什么時(shí)候需要添加getter和setter

如果希望在通過(guò)對(duì)象,屬性獲取性的值之前,再干點(diǎn)兒別的事情,就可以給這個(gè)屬性添加getter
如果希望在通過(guò)對(duì)象,屬性給屬性賦值之前,再干點(diǎn)兒別的事情,就可以給這個(gè)屬性添加setter

2.怎么添加getter和setter

getter:
a.在屬性名前加_
b.添加屬性對(duì)應(yīng)的getter
@property
def 屬性名去掉_(self):
函數(shù)體 --->會(huì)對(duì)屬性值進(jìn)行處理后,返回值的結(jié)果(必須要有返回值)

c.使用屬性的值的時(shí)候,不通過(guò)帶下劃線(xiàn)的屬性去使用,而是通過(guò)沒(méi)有下劃線(xiàn)的屬性去使用

注意:對(duì)象.不帶下劃線(xiàn)的屬性 --->調(diào)用getter對(duì)應(yīng)的函數(shù)

setter:
如果想要添加setter必須先添加getter
a.添加setter
@getter.setter
def 屬性名去掉?(self,參數(shù))
做別的事情
self.屬性名 = 處理后的值

isinstance(值,類(lèi)) --->判斷指定的值是否值指定類(lèi)型(返回值是bool)


image.png

image.png

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,621評(píng)論 1 32
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 30,194評(píng)論 8 265
  • 一、快捷鍵 ctr+b 執(zhí)行ctr+/ 單行注釋ctr+c ...
    o_8319閱讀 6,014評(píng)論 2 16
  • 今天接受了領(lǐng)導(dǎo)一項(xiàng)任務(wù),本來(lái)不愿意,后來(lái)想突破下自己,另外也給領(lǐng)導(dǎo)面子,別不識(shí)抬舉,但壓力啊
    封之之閱讀 230評(píng)論 0 0
  • 寫(xiě)在最前面的碎碎念 上個(gè)月我通過(guò)簡(jiǎn)書(shū)關(guān)注了一個(gè)微信公眾號(hào),本來(lái)是想學(xué)習(xí)作者的寫(xiě)作經(jīng)驗(yàn)的,結(jié)果公眾號(hào)里面居然大部分是...
    土土哥_閱讀 377評(píng)論 0 1

友情鏈接更多精彩內(nèi)容