实例方法、类方法、静态方法的区别
这三种方法都是保存在类的内存中,调用者不同。
- 实例方法由对象调用,至少一个
self
参数,self
代表对象的引用。
self指向当前的实例对象,所以只要该方法有self
参数,在调用此方法的时候会先把这个对象的内存空间加载进来,以便在方法中使用该实例对象的属性或者方法 - 类方法由类调用,至少一个
cls
参数,并且需要装饰器@classmethod
修饰
cls指向当前的类对象,类对象不等于实例对象,类对象和实例对象都有单独的内存空间存储,当调用一个含有@classmethod
装饰的方法,则会先加载这个类的内存空间 - 静态方法由类调用,不需要参数,需要装饰器
@staticmethod
修饰
静态方法不不要使用实例对象的属性方法也不需要使用类对象的属性所有无论往静态方法中传一个self
还是cls
都会加载对应的资源,而静态方法又不使用,所有为了节省资源静态方法就应运而生.并且一直保存再来没有删除,尽管用到的次数很少.