1樓:
這裡有例子說的比較清楚:
python @classmethod 的使用場合摘取的部分內容:
class
Data_test2
(object
):day=0
month=0
year=0
def__init__
(self
,year=0
,month=0
,day=0
):self
.day
=day
self
.month
=month
self
.year
=year
@classmethod
defget_date
(cls
,data_as_string
):#這裡第乙個引數是cls, 表示呼叫當前的類名year
,month
,day
=map
(int
,string_date
.split
('-'
))date1
=cls
(year
,month
,day
)#返回的是乙個初始化後的類
return
date1
defout_date
(self
"year :"
self
.year
"month :"
self
.month
"day :"
self
.day
在Date_test類裡面建立乙個成員函式, 前面用了@classmethod裝飾。 它的作用就是有點像靜態類,比靜態類不一樣的就是它可以傳進來乙個當前類作為第乙個引數。
那麼如何呼叫呢?
r=Data_test2.get_date("2016-8-6")r.out_date()
輸出:year :
2016
month :
8day :
1這樣子等於先呼叫get_date()對字串進行出來,然後才使用Data_test的建構函式初始化。
這樣的好處就是你以後重構類的時候不必要修改建構函式,只需要額外新增你要處理的函式,然後使用裝飾符 @classmethod 就可以了。
2樓:帝歸
例如你使用orm時,乙個User類對應資料庫中的user表。
你有乙個where方法,其作用相當於sql的select * from table where ...
此時,這個where方法就應該作為classmethod:
class User():
----@classmethod
----where(cls):
這樣,你就可以直接通過呼叫User.where()來取得資料庫中的所有使用者物件,而不需要新建乙個User類的物件之後再呼叫這個方法。
能否通俗的解釋Python的pickle模組是幹嘛用的?
python酷 Python物件在程式執行的時候是在記憶體中的,pickle模組可以將物件持久化到硬碟 通俗點就是儲存到檔案 物件裡邊儲存的資料就不會隨著Python物件生命週期的結束而丟失,使用的時候直接用pickle再從檔案載入回來就好了 Monk pickle模組實現了用於序列化和反序列化Py...
能簡要的概括一下你認為的網際網路思維嗎?
萌萌綠意 我認為哈,網際網路思維的核心在於 連線 表現為利用網際網路技術手段,實現資料的打通 資源的打通和人與人之間的打通。因為連線,效率變得更高,對使用者需求的理解變得更精準,資訊更加透明,能夠識別不同的場景,因此產品也更加友好 柔性,能夠快速迭代。在中國這個滲透率已經見頂的移動網際網路時代,這種...
Python中 init 的通俗解釋是什麼?
beatme 給例項賦值,初始化物件 就好像c裡面結構體的初始化,先malloc乙個結構體大小的記憶體 python裡是 new 然後給每個成員賦值。 小鮑 是否可以理解為函式引用,之前5 6年都在用Labview,跟這個開發環境很多的邏輯是互通的。匯入 init 方法後 其實也可以稱為函式 在整個...