摘要:而呢,它沒有默認的第一個輸入變量。它跟我們在一個空白的里寫的一個普通的函數沒有任何實質的區別。唯一的不同就是你要通過類或者實例來它。
class A(object): def foo(self, x): print "executing foo(%s, %s)" % (self, x) @classmethod def class_foo(cls, x): print "executing class_foo(%s, %s)" % (cls, x) @staticmethod def static_foo(x): print "executing static_foo(%s)" % x a = A()
看一下輸出:
常規定義的方法:
a.foo(1) # executing foo(<__main__.A object at 0xb7dbef0c>,1)
classmethod的輸出:
a.class_foo(1) # executing class_foo(,1)
以上代碼可以看出,創建classmethod時,該對象實例的class cls 是作為第一個輸入變量的,而不是該實例本身(如果是實例本身的話,第一個輸入變量就是self, 就是一個普通的我們常用的情況了)
這樣創建的classmethod 有什么好處呢? 好處就是你可以直接用class來call這個函數,而不需要費周折地先去創建一個實例(class instance)。
而staticmethods呢,它沒有默認的第一個輸入變量。 它跟我們在一個空白的script里寫的一個普通的函數 def fund():... 沒有任何實質的區別。唯一的不同就是你要通過 類class 或者實例instance 來call它。
With staticmethods, neither self (the object instance) nor cls (the class) is implicitly passed as the first argument. They behave like plain functions except that you can call them from an instance or the class.
本文參考來源:https://stackoverflow.com/que...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/43913.html
摘要:而類的實例并不會影響類的靜態變量,只是會修改對象實例本身的值,所以后面兩個的結果總是同樣,如果我們使用和結果也將僅僅是靜態變量變化后的結果,與類的實例無關以上是對和的暫時做的了解的總結,如有紕漏,請及時指正 概念 python 的classmethod 與staticmethod 這兩個有什么區別? 二者又有什么聯系?在google和baidu之后, 得到的大致的聯系就是二者都是對類的...
摘要:由上面的注釋,可以看出其實就相當于一個描述符類,而在此刻變成了一個描述符。調用這個方法可以知道,每調用一次,它都會經過描述符類的?;诿枋龇绾螌崿F同樣的也是一樣。我想你應該對描述符在中的應用有了更深的理解。好吧,我承認我標題黨了。但是這篇文章的知識點,你有極大的可能并不知道。 前段時間,我寫了一篇描述符的入門級文章,從那些文章里你知道了如何定義描述符,且明白了描述符是如何工作的。 如果你還...
摘要:由上面的注釋,可以看出其實就相當于一個描述符類,而在此刻變成了一個描述符。調用這個方法可以知道,每調用一次,它都會經過描述符類的?;诿枋龇绾螌崿F同樣的也是一樣。我想你應該對描述符在中的應用有了更深的理解。好吧,我承認我標題黨了。但是這篇文章的知識點,你有極大的可能并不知道。 前段時間,我寫了一篇描述符的入門級文章,從那些文章里你知道了如何定義描述符,且明白了描述符是如何工作的。 如果你還...
摘要:盡管和非常相似,但在用法上依然有一些明顯的區別。所以,從靜態方法的使用中可以看出,我們不會訪問到本身它基本上只是一個函數,在語法上就像一個方法一樣,但是沒有訪問對象和它的內部字段和其他方法,相反會訪問,會訪問。 python staticmethod and classmethod Though classmethod and staticmethod are quite simil...
摘要:什么是中的它的用途是什么裝飾器對應的函數不需要實例化,不需要參數,但第一個參數需要是表示自身類的參數,可以來調用類的屬性,類的方法,實例化對象等。 什么是python中的classmethod,它的用途是什么? classmethod裝飾器對應的函數不需要實例化,不需要 self 參數,但第一個參數需要是表示自身類的 cls 參數,可以來調用類的屬性,類的方法,實例化對象等。 cl...
閱讀 1733·2021-10-18 13:30
閱讀 2608·2021-10-09 10:02
閱讀 2965·2021-09-28 09:35
閱讀 2091·2019-08-26 13:39
閱讀 3522·2019-08-26 13:36
閱讀 1950·2019-08-26 11:46
閱讀 1135·2019-08-23 14:56
閱讀 1694·2019-08-23 10:38