Python的静态方法和类成员方法都可以被类或实例访问,两者之间的区别:
1.静态方法无需传入self参数,类成员方法需传入代表本类的cls参数
2.静态方法无法访问实例变量,类成员方法也无法访问实例变量,但可以类成员方法可以访问类变量
class myclass():
val1 = 'abc'
def __init__(self):
self.val2 = 'xyz'
@staticmethod
def staticmd():
pass #无法访问val1 和self.val2
@classmethod
def classmd():
pass #可以访问val1 但是无法访问self.val2
静态方法:无法访问类属性、实例属性,相当于一个相对独立的方法,跟类其实没什么关系,换个角度来讲,其实就是放在一个类的作用域里的函数而已。
类成员方法:可以访问类属性,无法访问实例属性。上述的变量val1,在类里是类变量,在实例中又是实例变量,所以容易混淆。