面向对象之-@classmethod、@staticmethod和@classonlymethod的区别

实例方法、静态方法与类方法的含义

  实例方法(普通方法)的含义就是需要类对象实例之后才能调用的方法,该方法的基本格式为:

def test(self,*args,**kwargs): # 第一个参数必须是self
     print("test")

  静态方法:使用装饰器@staticmethod装饰的方法称为静态方法,但是此类方法没有self参数,且参数的个数是任意的。

  类方法:使用装饰器@classmethod装饰的方法称为类方法,但是此类方法第一个参数为cls,用于标示该类方法所属的类。

  @classonlymethod:只允许使用类对象.方法() 的形式进行调用,不允许使用类对象实例的方式进行调用

  需要说明的是,静态方法和类方法都可以不实例化类对象直接通过类.方法名的形式进行调用,调用方法也都需要加括号

原文地址:https://www.cnblogs.com/liuyinzhou/p/9287757.html