Python中function和method

在Python中,你会同时看到『function』和『method』,所以Google的Python Style Guide中也对『function』和『method』分别进行了命名规则说明。

在Python中,『function』就是一般意义上的函数,『method』是与类相关的函数,从概念上说,『function』和『method』都是函数,且『method』是『function』的子集。注意,这只是从概念上说,实际上,python中『function』和『method』是不同的类型,有class function
和class method
之分(python3中)。
在Python中用def
定义的都是函数。在类内定义的函数,通常来说是method,但也可能是function。这要看如何使用这个函数。总结一下,我对python中『function』和『method』的理解,如下:
如果一个函数(
def
定义的)是不用依赖类的实例就可以调用,那么这个函数就是function类型的。例如,类的静态方法(@staticmethod
),或者直接通过类名来调用类里声明的非静态函数,形式如ClassX.funcA()
。如果一个函数(
def
定义的)必须要依赖类的实例才能执行,那么此函数就是method类型的。例如,通过类的实例调用的方法,形式如ClassX().funcA()
. (与上面的区别是括号:ClassX()
和ClassX
的区别)如果一个函数(
def
定义的)依赖类本身,那么此函数是method类型的。这类函数是通过@classmethod
修饰的类方法,因为类方法的第一个参数必须是类本身。注意,类方法的第一个参数不是类的实例(对象)。
更多参考:https://blog.csdn.net/hshl1214/article/details/108983000