Python使用靜態(tài)方法類似函數(shù)工具使用,一般盡量少用靜態(tài)方法。

創(chuàng)新互聯(lián)專注于望江企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站制作。望江網(wǎng)站建設(shè)公司,為望江等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
Python的靜態(tài)方法和類成員方法都可以被類或?qū)嵗L問(wèn),兩者概念不容易理清,但還是有區(qū)別的:
1)靜態(tài)方法無(wú)需傳入self參數(shù),類成員方法需傳入代表本類的cls參數(shù);
2)從第1條,靜態(tài)方法是無(wú)法訪問(wèn)實(shí)例變量的,而類成員方法也同樣無(wú)法訪問(wèn)實(shí)例變量,但可以訪問(wèn)類變量;
3)靜態(tài)方法有點(diǎn)像函數(shù)工具庫(kù)的作用,而類成員方法則更接近類似Java面向?qū)ο蟾拍钪械撵o態(tài)方法。
1.類方法用@classmethod:
? ? 用途:一般用來(lái)對(duì)類屬性進(jìn)行限制性操作
? ? 用法:該方法的調(diào)用者(不管是類調(diào)用還是實(shí)例調(diào)用),會(huì)默認(rèn)把該類作為第一個(gè)參數(shù)傳進(jìn)來(lái)(調(diào)用者不必顯示指定),這樣該方法內(nèi)部可以獲取到該類,從而對(duì)類屬性進(jìn)行操作。實(shí)際用途可以用來(lái)限制對(duì)類屬性的訪問(wèn),不管是類調(diào)用還是實(shí)例調(diào)用,能保證修改的都是類屬性。
2.靜態(tài)方法用@staticmethod:
? ? 用途:用來(lái)實(shí)現(xiàn)工具性方法
? ? 用法:如果方法內(nèi)部沒(méi)有涉及到對(duì)實(shí)例屬性的操作,可以把該方法定義為靜態(tài)方法,不管是類調(diào)用還是實(shí)例調(diào)用,都能直接調(diào)用該方法實(shí)現(xiàn)相應(yīng)功能。
3.普通方法:
? ? 用途:實(shí)例調(diào)用的方法
? ? 用法:方法內(nèi)部涉及到對(duì)實(shí)例屬性的操作,實(shí)例調(diào)用該方法時(shí)會(huì)自動(dòng)默認(rèn)將實(shí)例的引用作為第一個(gè)參數(shù)傳進(jìn)去。也可以用類直接訪問(wèn),不過(guò)這樣訪問(wèn)時(shí)需要手動(dòng)傳入第一個(gè)參數(shù),也就是一個(gè)實(shí)例的引用。
附加: @property的使用(從語(yǔ)義規(guī)范上來(lái)說(shuō),只用于普通方法,也就是對(duì)實(shí)例變量進(jìn)行控制,但也可以強(qiáng)行用來(lái)對(duì)類變量進(jìn)行控制)
對(duì)私有變量的控制訪問(wèn)可以借鑒java的get、set方式。這沒(méi)有任何問(wèn)題。唯一的問(wèn)題就是不直觀,把對(duì)變量的訪問(wèn)變成了對(duì)方法的訪問(wèn)。而@property的作用就是還原這種直觀的訪問(wèn)方式,可以像訪問(wèn)變量一樣訪問(wèn)@property修飾的方法。注意:如果不想讓別人修改某變量,可以用不寫(xiě)@XXX.setter方法來(lái)實(shí)現(xiàn)。
總結(jié):不管方法是哪一種方法(類方法,靜態(tài)方法,還是普通的實(shí)例方法),都可以用類直接訪問(wèn)和用實(shí)例進(jìn)行訪問(wèn),只是參數(shù)多傳一個(gè)多傳一個(gè)的問(wèn)題。更重要的是語(yǔ)義的規(guī)范,語(yǔ)法上沒(méi)什么問(wèn)題。
@staticmethod 靜態(tài)方法只是名義上歸屬類管理,但是 不能使用類變量和實(shí)例變量,是類的工具包
放在函數(shù)前(該函數(shù)不傳入self或者cls),所以不能訪問(wèn)類屬性和實(shí)例屬性
類,class,用來(lái)描述具有相同的屬性和方法的對(duì)象的集合。它定義了該集合中每個(gè)對(duì)象所共有的屬性和方法。對(duì)象是類的實(shí)例。
函數(shù),是組織好的,可重復(fù)使用的,用來(lái)實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。
函數(shù)能提高應(yīng)用的模塊性,和代碼的重復(fù)利用率。你已經(jīng)知道python提供了許多內(nèi)建函數(shù),比如print()。但你也可以自己創(chuàng)建函數(shù),這被叫作用戶自定義函數(shù)。
python語(yǔ)言中類和函數(shù)的區(qū)別
1、規(guī)則不同
類是一種引用數(shù)據(jù)類型,類似于byte、short、int(char)、long、float、double等基本數(shù)據(jù)類型;
函數(shù)必須聲明后才可以被調(diào)用,調(diào)用格式為:函數(shù)名(實(shí)參)調(diào)用時(shí)函數(shù)名后的小括號(hào)中的實(shí)參必須和聲明函數(shù)時(shí)的函數(shù)括號(hào)中的形參個(gè)數(shù)相同。
2、主體不同
類是面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)現(xiàn)信息封裝的基礎(chǔ);
函數(shù)是指一段在一起的、可以做某一件事的子程序。
3、特點(diǎn)不同
類是一種用戶定義的引用數(shù)據(jù)類型,也稱類類型,每個(gè)類包含數(shù)據(jù)說(shuō)明和一組操作數(shù)據(jù)或者傳遞消息的函數(shù),類的實(shí)例稱為對(duì)象;
函數(shù)分為全局函數(shù)、全局靜態(tài)函數(shù),在類中還可以定義構(gòu)造函數(shù)、析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、成員函數(shù)、友元函數(shù)、運(yùn)算符重載函數(shù)、內(nèi)聯(lián)函數(shù)等。
新聞名稱:python有靜態(tài)函數(shù)嗎 python類的靜態(tài)方法
URL分享:http://www.chinadenli.net/article40/hpgoeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、手機(jī)網(wǎng)站建設(shè)、服務(wù)器托管、企業(yè)建站、品牌網(wǎng)站制作、營(yíng)銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)