欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中靜態(tài)方法,類方法,屬性方法使用方法

 更新時(shí)間:2022年05月20日 12:01:29   作者:Python熱愛(ài)者  
這篇文章主要介紹了Python中靜態(tài)方法,類方法,屬性方法使用方法,文章圍繞主題的相關(guān)資料展開詳細(xì)內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

1.靜態(tài)方法

通過(guò)@staticmethod裝飾器即可把其裝飾的方法變?yōu)橐粋€(gè)靜態(tài)方法,什么是靜態(tài)方法呢?其實(shí)不難理解,普通的方法,可以在實(shí)例化后直接調(diào)用,并且在方法里可以通過(guò)self.調(diào)用實(shí)例變量或類變量,但靜態(tài)方法是不可以訪問(wèn)實(shí)例變量或類變量的,一個(gè)不能訪問(wèn)實(shí)例變量和類變量的方法,其實(shí)相當(dāng)于跟類本身已經(jīng)沒(méi)什么關(guān)系了,它與類唯一的關(guān)聯(lián)就是需要通過(guò)類名來(lái)調(diào)用這個(gè)方法

應(yīng)用:

對(duì)與一個(gè)類,我們要調(diào)用它的一個(gè)方法,必須要綁定實(shí)例,而不能直接通過(guò)類名.方法名()的形式調(diào)用。因此,想要通過(guò)類來(lái)調(diào)用方法,而不是通過(guò)實(shí)例,可以使用靜態(tài)方法@staticmethod和類方法@classmethod的形式實(shí)現(xiàn)。

#靜態(tài)方法 只是名義上歸類管理,實(shí)際上在靜態(tài)方法里訪問(wèn)不了類或?qū)嵗?的任何屬性
class Dog(object):
def __init__(self,name):
self.name=name
@staticmethod #實(shí)際上跟類本身已沒(méi)什么關(guān)系,只是名義上是類的方法(與類無(wú)關(guān),不能訪問(wèn)類里的任何屬性和方法)
def eat(self,name):
print("%s is eating %s"%(self.name,name))

d=Dog('sb')
# d.eat('baozi')#出錯(cuò) 原因是eat需要一個(gè)self參數(shù),但調(diào)用時(shí)卻沒(méi)有傳遞,沒(méi)錯(cuò),因?yàn)楫?dāng)eat變成靜態(tài)方法后,再通過(guò)實(shí)例調(diào)用時(shí)就不會(huì)自動(dòng)把實(shí)例本身當(dāng)作一個(gè)參數(shù)傳給self了
#解決辦法
#1.調(diào)用時(shí)主動(dòng)傳遞實(shí)例本身給eat方法#在eat中去掉self參數(shù),但這也意味著,在eat中不能通過(guò)self.調(diào)用實(shí)例中的其他變量了
d.eat(d,'baozi')
#執(zhí)行結(jié)果
>>>sb is eating baozi

2.類方法

類方法通過(guò)@classmethod裝飾器實(shí)現(xiàn),類方法和普通方法的區(qū)別是, 類方法只能訪問(wèn)類變量,不能訪問(wèn)實(shí)例變量

class Dog(object):
name='SB' #類變量
def __init__(self,name):
self.name=name
@classmethod #類方法只能訪問(wèn)類變量,不能訪問(wèn)實(shí)例變量
def eat(self,name):
print('%s is eating %s'%(self.name,name))
def talk(self,something):
print("%s is talking %s"%(self.name,something))
d=Dog('Lulu')
d.eat('Mantou')
#執(zhí)行結(jié)果
SB is eating Mantou

3.靜態(tài)方法與類方法總結(jié)

靜態(tài)方法其實(shí)就是一個(gè)定義在類中的方法,只是調(diào)用時(shí)可以不需要先對(duì)類進(jìn)行實(shí)例化,直接用類調(diào)用即可。無(wú)論后面怎么繼承,它的實(shí)現(xiàn)不變。

類方法也在調(diào)用時(shí)也不需要先對(duì)類進(jìn)行實(shí)例化,但是它的實(shí)現(xiàn),在繼承時(shí)是跟隨當(dāng)前的子類的(因?yàn)樗牡谝粋€(gè)參數(shù)永遠(yuǎn)是cls)

它們常用于將數(shù)據(jù)預(yù)處理等封裝在類內(nèi),避免代碼擴(kuò)散到類外不好維護(hù)

4.屬性方法

屬性方法的作用就是通過(guò)@property把一個(gè)方法變成一個(gè)靜態(tài)屬性

class Dog(object):
name='suantou'
def __init__(self,name):
self.name=name
@property #把一個(gè)方法變成一個(gè)靜態(tài)屬性
def eat(self):
print('%s is eating %s'%(self.name,'something'))
@eat.setter #為eat屬性賦值
def eat(self,food):
print('set to food',food)
def talk(self,something):
print("%s is talking %s"%(self.name,something))
d=Dog('Lulu')
#d.eat('baozi')出錯(cuò) 說(shuō)NoneType is not callable, 因?yàn)閑at此時(shí)已經(jīng)變成一個(gè)靜態(tài)屬性了, 不是方法了, 想調(diào)用已經(jīng)不需要加()號(hào)了,直接d.eat就可以了
d.eat
d.eat='baozi'

實(shí)際場(chǎng)景應(yīng)用:

比如 ,你想知道一個(gè)航班當(dāng)前的狀態(tài),是到達(dá)了、延遲了、取消了、還是已經(jīng)飛走了, 想知道這種狀態(tài)你必須經(jīng)歷以下幾步:

  • 連接航空公司API查詢
  • 對(duì)查詢結(jié)果進(jìn)行解析
  • 返回結(jié)果給你的用戶

因此這個(gè)status屬性的值是一系列動(dòng)作后才得到的結(jié)果,所以你每次調(diào)用時(shí),其實(shí)它都要經(jīng)過(guò)一系列的動(dòng)作才返回你結(jié)果,但這些動(dòng)作過(guò)程不需要用戶關(guān)心, 用戶只需要調(diào)用這個(gè)屬性就可以了

class Flight(object):
def __init__(self, name):
self.flight_name = name
def checking_status(self):
print("checking flight %s status " % self.flight_name)
return 1
@property
def flight_status(self):
status = self.checking_status()
if status == 0:
print("flight got canceled...")
elif status == 1:
print("flight is arrived...")
elif status == 2:
print("flight has departured already...")
else:
print("cannot confirm the flight status...,please check later")
@flight_status.setter # 修改
def flight_status(self, status):
status_dic = {
0: "canceled",
1:"arrived",
2: "departured"
}
print("\033[31;1mHas changed the flight status to \033[0m", status_dic.get(status))
@flight_status.deleter # 刪除
def flight_status(self):
print("status got removed...")
f = Flight("CA980")
f.flight_status
f.flight_status = 2 # 觸發(fā)@flight_status.setter
del f.flight_status # 觸發(fā)@flight_status.deleter

到此這篇關(guān)于Python中靜態(tài)方法,類方法,屬性方法使用方法的文章就介紹到這了,更多相關(guān)Python靜態(tài)方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)對(duì)圖像加噪(高斯噪聲 椒鹽噪聲)

    Python實(shí)現(xiàn)對(duì)圖像加噪(高斯噪聲 椒鹽噪聲)

    這篇文章主要介紹了展示通過(guò)Python給圖像疊加不同等級(jí)的椒鹽噪聲和高斯噪聲的代碼,相應(yīng)的疊加噪聲的已編為對(duì)應(yīng)的類,可實(shí)例化使用。感興趣的同學(xué)可以看看
    2021-11-11
  • python實(shí)現(xiàn)坦克大戰(zhàn)游戲 附詳細(xì)注釋

    python實(shí)現(xiàn)坦克大戰(zhàn)游戲 附詳細(xì)注釋

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)坦克大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 使用python查找windows系統(tǒng)中所有程序的安裝信息

    使用python查找windows系統(tǒng)中所有程序的安裝信息

    這篇文章主要為大家介紹了使用python查找windows系統(tǒng)中所有程序的安裝信息示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • python創(chuàng)建屬于自己的單詞詞庫(kù) 便于背單詞

    python創(chuàng)建屬于自己的單詞詞庫(kù) 便于背單詞

    這篇文章主要為大家詳細(xì)介紹了python創(chuàng)建屬于自己的單詞詞庫(kù),便于背單詞,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • AI生成圖片Stable?Diffusion環(huán)境搭建與運(yùn)行方法

    AI生成圖片Stable?Diffusion環(huán)境搭建與運(yùn)行方法

    Stable?Diffusion是一種基于擴(kuò)散過(guò)程的生成模型,由Ge?et?al.在2021年提出,該模型利用了隨機(jī)變量的穩(wěn)定分布,通過(guò)遞歸地應(yīng)用擴(kuò)散過(guò)程來(lái)生成高質(zhì)量的圖像,這篇文章主要介紹了AI圖片生成Stable?Diffusion環(huán)境搭建與運(yùn)行,需要的朋友可以參考下
    2023-05-05
  • 分享5個(gè)方便好用的Python自動(dòng)化腳本

    分享5個(gè)方便好用的Python自動(dòng)化腳本

    這篇文章主要介紹了分享5個(gè)方便好用的Python自動(dòng)化腳本,這次我們使用Python來(lái)實(shí)現(xiàn)幾個(gè)自動(dòng)化場(chǎng)景,或許可以用到你的工作中或者對(duì)你的學(xué)習(xí)有所幫助,需要的朋友可以參考一下
    2022-03-03
  • 淺談python中的多態(tài)

    淺談python中的多態(tài)

    在面向?qū)ο蟪绦蛟O(shè)計(jì)中,除了封裝和繼承特性外,多態(tài)也是一個(gè)非常重要的特性。讓具有不同功能的函數(shù)可以使用相同的函數(shù)名,這樣就可以用一個(gè)函數(shù)名調(diào)用不同內(nèi)容(功能)的函數(shù)
    2021-06-06
  • python三大神器之fabric使用教程

    python三大神器之fabric使用教程

    fabric 是一個(gè)python包 是一個(gè)基于ssh的部署工具包,這篇文章主要介紹了python三大神器之fabric,需要的朋友可以參考下
    2019-06-06
  • Python Numpy教程之排序,搜索和計(jì)數(shù)詳解

    Python Numpy教程之排序,搜索和計(jì)數(shù)詳解

    這篇文章主要為大家詳細(xì)介紹了Python?NumPy中排序,搜索和計(jì)數(shù)的實(shí)現(xiàn),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下
    2022-08-08
  • python+numpy實(shí)現(xiàn)的基本矩陣操作示例

    python+numpy實(shí)現(xiàn)的基本矩陣操作示例

    這篇文章主要介紹了python+numpy實(shí)現(xiàn)的基本矩陣操作,結(jié)合實(shí)例形式分析了Python使用numpy模塊針對(duì)矩陣進(jìn)行創(chuàng)建、增刪查改、索引、運(yùn)算相關(guān)操作實(shí)現(xiàn)技巧,注釋中包含有詳細(xì)的說(shuō)明,需要的朋友可以參考下
    2019-07-07

最新評(píng)論