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