静态方法类方法的区别

  • Post author:
  • Post category:其他



Python 的类方法和静态方法很相似,它们都推荐使用类来调用(其实也可使用对象来调用)。 类方法和静态方法的区别在于,Python会自动绑定类方法的第一个参数,类方法的第一个参数(通常建议参数名为 cls)会自动绑定到类本身;但对于静态方法则不会自动绑定。

类方法


是类对象所拥有的方法,需要用修饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数(当然可以用其他名称的变量作为其第一个参数,但是大部分人都习惯以’cls’作为第一个参数的名字,就最好用’cls’了),能够通过实例对象和类对象去访问


类方法通过@classmethod装饰器实现,类方法和普通方法的区别是, 类方法只能访问类变量,不能访问实例变量

静态方法


需要通过修饰器



@staticmethod



来进行修饰,静态方法不需要多定义参数,可以通过对象和类来访问。


静态方法中只能调用静态成员或者方法,不能调用非静态方法或者非静态成员(如果静态方法想调用非静态方法或者非静态成员需要先实例化即先new一个),而非静态方法既可以调用静态成员或者方法又可以调用其他的非静态成员或者方法。


在类中的方法前面通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法

总结


普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的,一个不能访问实例变量和类变量的方法,其实相当于跟类本身已经没什么关系了,它与类唯一的关联就是需要通过类名来调用这个方法。



版权声明:本文为weixin_62957835原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。