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