python 中的类方法与静态方法都可以被类或实例访问,其区别总结如下
a、类方法:
在python 2.4以后,通过修饰器实现
@classmethod
def test(cls):
print cls.__name__
2、类方法需要传入代表本类的cls参数(cls可以为其他单词,但一般习惯使用cls)
3、类方法无法访问实例变量,但可以访问类变量
b、静态方法:
静态方法无需传入self参数,相当于一个独立的方法,与类关系不大,一般很少使用。
c、测试程序如下
#/bin/env python
#coding:utf-8
class TestClassMethod(object):
METHOD = 'Class variable '
def __init__(self):
self.name = 'leon'
def test1(self):
print '实例方法'
print self.name
print ''
@classmethod
def test2(cls):
print '类方法'
print cls
print cls.METHOD
print ''
@staticmethod
def test3():
print '静态方法'
print ''
if __name__ == '__main__':
a = TestClassMethod()
a.test1()
a.test2()
#TestClassMethod.test2()
a.test3()
#TestClassMethod.test3()