Python中function和method

在Python中,你會(huì)同時(shí)看到『function』和『method』,所以Google的Python Style Guide中也對『function』和『method』分別進(jìn)行了命名規(guī)則說明。

在Python中,『function』就是一般意義上的函數(shù),『method』是與類相關(guān)的函數(shù),從概念上說,『function』和『method』都是函數(shù),且『method』是『function』的子集。注意,這只是從概念上說,實(shí)際上,python中『function』和『method』是不同的類型,有class function
和class method
之分(python3中)。
在Python中用def
定義的都是函數(shù)。在類內(nèi)定義的函數(shù),通常來說是method,但也可能是function。這要看如何使用這個(gè)函數(shù)??偨Y(jié)一下,我對python中『function』和『method』的理解,如下:
如果一個(gè)函數(shù)(
def
定義的)是不用依賴類的實(shí)例就可以調(diào)用,那么這個(gè)函數(shù)就是function類型的。例如,類的靜態(tài)方法(@staticmethod
),或者直接通過類名來調(diào)用類里聲明的非靜態(tài)函數(shù),形式如ClassX.funcA()
。如果一個(gè)函數(shù)(
def
定義的)必須要依賴類的實(shí)例才能執(zhí)行,那么此函數(shù)就是method類型的。例如,通過類的實(shí)例調(diào)用的方法,形式如ClassX().funcA()
. (與上面的區(qū)別是括號(hào):?ClassX()
?和ClassX
的區(qū)別)如果一個(gè)函數(shù)(
def
定義的)依賴類本身,那么此函數(shù)是method類型的。這類函數(shù)是通過@classmethod
修飾的類方法,因?yàn)轭惙椒ǖ牡谝粋€(gè)參數(shù)必須是類本身。注意,類方法的第一個(gè)參數(shù)不是類的實(shí)例(對象)。
更多參考:https://blog.csdn.net/hshl1214/article/details/108983000