python 中 staticmethod 和 classmethod有什么区别

面试中经常会问到staticmethod 和 classmethod有什么区别?
 
首先看下官方的解释:
 
staticmethod:
 
它的一个作用就是将一个一个类的函数转为一个静态函数。静态函数的作用和java,c++的静态函数类似,作用一些全局变量等。
 
classmethod:
 
classmethod 和 c++,java的类方法不同。类方法的参数是一个类,实例方法的参数是一个实例。
 
例如下面的程序:
 
其中的__main__.A 为类A的名字。
 
如果将@classmethod去掉,则输出的结果为:
 
可以看到这个时候rty的内容为,类A实例的地址。它和c++的类方法不是一回事儿,c++,java的类方法必须通过实例来调用。

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h63947.shtml

张贴在3